上記のコンボボックスの選択に基づいてコンボボックスをリフレッシュしようとしています。最初ASP.NET MVCカスケードコンボボックス
public JsonResult Testeeee(int id_cat)
{
var result = new dificuldade();
SqlCommand com;
string str;
SqlConnection conn = new SqlConnection(@"Server=DESKTOP-4GPISBO\SQLEXPRESS;Database=Jogo;Trusted_Connection=True;");
conn.Open();
str = "select tipo_dificuldade, dificuldade.id_dificuldade " +
"from dificuldade " +
"INNER JOIN palavra ON palavra.id_dificuldade = dificuldade.id_dificuldade " +
"where palavra.id_cat = '" + id_cat + "' ";
com = new SqlCommand(str, conn);
SqlDataReader reader = com.ExecuteReader();
if (reader.Read())
{
result.TIPO_DIFICULDADE = reader["tipo_dificuldade"].ToString();
result.id_dificuldade = int.Parse(reader["id_dificuldade"].ToString());
}
conn.Close();
return Json(result, JsonRequestBehavior.AllowGet);
}
の選択に基づいて、第2のコンボボックスを埋めるために
コントローラメソッドのコードこれが私の見解コードされています:
@Html.DropDownListFor(model => model.id_cat, ViewBag.ListaCategoria as SelectList, "-- Selecione a Categoria --", new { @class = "form-control" })
@Html.DropDownListFor(model => model.id_dificuldade, new SelectList(" "), "-- Selecione a Dificuldade --", new { @class = "form-control" })
私は、コントローラのための次のコードを持っていますjQueryコード:
$(document).ready(function() {
$("#id_cat").change(function() {
$.get("/Home/Testeeee", { id_cat: $("#id_cat").val() }, function (data) {
$("#id_dificuldade").empty();
$.each(data, function (index, row) {
$("#id_dificuldade").append("<option value='" + row.id_dificuldade + "'>" + row.TIPO_DIFICULDADE + "</option>")
});
});
})
});
私の問題
は私の問題は、値が返却されなかったか、認識されないかのように値が、第二のコンボボックスでundefined
を返すことです。
あなたのコントローラメソッドはコレクションではなく、一つの 'dificuldade'を返します(そして、あなたは単一のオブジェクトを反復できません) –
リストとして返すにはどうすればいいですか? –
'リスト'を初期化し、そのコレクションに 'dificuldade'の新しいインスタンスを追加するために' while(reader.Read()) 'を使い、コレクションを返します。 –