私は、別のものの選択に基づいて動的に作成する必要があるドロップダウンリストを持っています。それは、リストを最初にクリアした後に、ドロップダウンリストに新しいデータをレンダリングする必要があるまで、すべて動作します。リストはクリアされますが、コントローラーから返される新しいデータを入力することができません。私はこれのためにそれぞれを使用しようとしています。あなたが見ることができるように、私はリストのシリアル化されたJSONの結果を返すよ.eachを使用してjsonresultからドロップダウンリストを作成する
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult UpdateDocumentSubType(string DocumentType)
{
List<SelectListItem> DocumentSubTypeList = new List<SelectListItem>();
PropertyModel model = new PropertyModel();
int DocTypeID = 0;
//get DocTypeID
DocTypeID = model.GetDocTypeID(DocumentType);
//gets new document subtype list
DocumentSubTypeList = model.GetDocumentSubTypes(DocTypeID);
//return document subtype list
return Json(DocumentSubTypeList, JsonRequestBehavior.AllowGet);
}
:
は、ここで問題になっているコントローラメソッドです。ビューで
、私は次のようにあります
$.ajax({
url: '@Url.Action("UpdateDocumentSubType","Document")',
type: 'GET',
dataType: "json",
data: { DocumentType: SelectedDocTypeText },
async: true,
success: function (data) {
var select = $("#Docs_DocumentSubTypeID");
select.empty();
$.each(data, function (index, item) {
select.append($('<option></option>').val(item).html(index));
});
}
});
すべてが崩壊してしまう場所です。コードはselect.empty()にヒットし、それを正常に実行しますが、SelectListItemの "text"値として代わりにオブジェクトの配列のインデックス要素を提供します。基本的に、タグは次のように表示されます。
<option value="[object Object]">1</option>
<option value="[object Object]">2</option>
<option value="[object Object]">3</option>
<option value="[object Object]">4</option>
私はデータが渡されていることを確認しました。 .eachをとり、独自の関数に入れて、その関数を呼び出し、 "debugger;"を追加します。それには、結果として生じる「データ」のデータを[オブジェクト、オブジェクト]の4つの要素として見ることができます。
あなたが推測しているかもしれませんが、JQueryは私の強い訴訟ではありません。 :)
あなたは 'data'で何を得ますか?それをあなたの質問に費やすことができますか? –