0

MVC ActionResult から Json データとして返される SelectList があります。

コントローラー:

  public JsonResult _ConnectorFilters(string arg1, string arg2, string arg3) {
      //collecting selectlist items ex: 
      listConatenated.Add(newSelectListItem {Value = "Category1", Text = "attribute1"};
      listConatenated.Add(newSelectListItem {Value = "Category1", Text = "attribute2"}
      listConatenated.Add(newSelectListItem {Value = "Category2", Text = "attribute3"};

     return Json(new SelectList(listConcatenated, "Value", "Text"));

 }

ビューのリストで、JsonResult に返される一致するカテゴリと同じであるが、一致しないoptionテキストを持つ各項目を見つけて、それぞれの「無効化」プロパティを「true. "<select/>value

繰り返しますが、現在のリスト:

  <select class="Category1Class">
     <option value="Category1">attribute100<option/>
     <option value="Category1">attribute40<option/>
     <option value="Category1">attribute1<option/>
     <option value="Category1">attribute2<option/>
  </select>

次に、結果関数に書き込もうとしているjquery関数は次success:を返します。

  <select class="Category1Class">
     <option value="Category1" disabled>attribute100<option/>
     <option value="Category1" disabled>attribute40<option/>
     <option value="Category1">attribute1<option/>
     <option value="Category1">attribute2<option/>
  </select>                     

これが理にかなっていることを願っています。Json の結果と比較するときの開始方法がわからない。事前に感謝します。もっと明確にできるかどうか教えてください。

4

1 に答える 1

1

応答が次のようになると仮定します。

[
 { "Value": "Category1","Text": "attribute1"},
 { "Value": "Category1","Text": "attribute2"}
]

each()および useを使用して応答をループしfilter()、一致する DOM 要素を分離できます。

var $opts= $('select.Category1Class option');
/* loop over response as "data" */
$.each(data, function( index, item){
   $opts.filter(function(){
       /* return boolean based on matches */
       return $(this).text() === item.Text && this.value === item.Value;
      /* disable resultant collection */
   }).prop('disabled', true);
});
于 2014-11-18T19:30:31.610 に答える