2017-07-15 15 views
1

モデルには2つのプロパティ、つまり文字列setIDと文字列リストがあります。集合はworkOrdersの集合です。私はコンソールで確認したとき、私は唯一のSETIDがdislayedさASP.Net MVC DropListの値が間違ったプロパティにバインドされています

$("#SetDDL :selected").val(); 
"TC2010-TEST-2017-OS" 
$("#SetDDL :selected").text(); 
"TC2010-TEST-2017-OS" 

は私のモデルは

public class SetWoDropDownModel 
{ 
    public string setId { get; set; } 
    public List<string> woId { get; set; } 
} 

のように見え、これはドロップダウンで、woIdにバインドするためにドロップダウンリストの選択された値を取得するために苦労していますビューの部分

@model IEnumerable<Tiamat.WebUI.Areas.ParksRMSetAutomation.Models.SetWoDropDownModel> 
@{ 
ViewBag.Title = "Parks Routine Maintenance Sets Automation"; 
Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

@Html.DropDownList("SetId", 
    new SelectList(Model.Select(i => i.setId).Distinct().ToList(), Model.Select(i => i.woId).Distinct().ToList()),"Select Set ID", 
    new {@class = "input-large form-control", @id = "SetDDL", @onchange = "setDropDownChange(this.value)"} 
    ) 

はすべてsetDropDownChangeがやっていることをボタン

function setDropDownChange(val) { 
if (val !== "") { 
$('#btnSubmit').attr('style', 'visibility: visible'); 
} else { 
$('#btnSubmit').attr('style', 'visibility: hidden'); 
} 

の可視性をトグルしている誰かが正しい方向に私を指すもらえますか?

+0

私はあなたがテキストと値のドロップダウンリストを設定するためにDistinct()を使用しているのを見ています。両方のリストに同じ数のアイテムがあることは確かですか? – derloopkat

+0

なし、1つのSETIDはwoIdの、 例えば "TC2010-TEST-2017-OS" それに接続されている任意の数を持つことができます - "WO-17から123、WO-17から124" 「TC2011-TEST-2017- OS " - " wo-17-125、wo-17-126、wo-17-127 " 違いがありますか? – Damage

+0

最初の問題は、使用しているRazorヘルパーが各テキストを一致させるためにテキストと値のリストを期待していることです。 1つのテキスト - > 1つの値。第二に、私は構文が間違っていると思うし、その理由から価値が縛られていない。 – derloopkat

答えて

0

あなたのモデルには、各セットIDごとのアイテムのリストがあるとします。

var Model = new[] 
{ 
    new { setId = "TC2010-TEST-2017-OS", woId = new[] { "W01", "W05", "W07"}}, 
    new { setId = "TC2011-TEST-2017-OS", woId = new[] { "W02", "W10" }}   
}; 

次に、このような項目をグループ化できます。

var itemList = from item in Model 
    group item.woId by item.setId into g 
    select new { setId = g.Key, woId = string.Join(",", g.SelectMany(v=>v).ToArray())}; 

リストをヘルパーに渡します。

@Html.DropDownList("SetId", 
    new SelectList(itemList, "woId", "setId", null), "Select Set ID", 
    new {@class = "input-large form-control", id = "SetDDL", 
     onchange = "setDropDownChange(this.value)" 
}) 

結果のHTMLは次のようになります。

<select class="input-large form-control" id="SetDDL" name="SetId" 
    onchange="setDropDownChange(this.value)"> 
    <option value="">Select Set ID</option> 
    <option value="W01,W05,W07">TC2010-TEST-2017-OS</option> 
    <option value="W02,W10">TC2011-TEST-2017-OS</option> 
</select> 
+0

ありがとう!私は近づいています Html.DropDownList( "SetId"、 新しいSelectList(Model、 "woId"、 "setId"、Model.Select(i => i.woId).Distinct()。ToList())、セットID " 新しい{クラス= "入力大型フォームコントロール"、ID = "SetDDL" のonchange = "setDropDownChange(this.value)" を}選択 )私はちょうど値 列挙する必要 " システム.Collections.Generic.List'1 [System.String] " – Damage

+0

* Model.Select(i => i.woId).Distinct()。ToList()*、これは値またはnullを選択する必要があります。 – derloopkat

+0

私はそれを空白のままにしてみましたが、私は同じ結果を得ていました。 – Damage

関連する問題