0

ビュー「State」と「District」で 2 つの DropDownList を取得しました。次のコードを使用して、「状態」DDL を設定しました。

コントローラ:-

var districts = (from r in db.Districts
                     select new { r.DistrictName });
ViewBag.DistrictName = new SelectList(districts, "DistrictName", "DistrictName");

意見:-

@Html.DropDownList("State", ViewBag.StateName as SelectList, "Select a State")

これで、State を選択するたびに、json 呼び出しによって「District」DDL が読み込まれます。

コントローラ:-

[HttpGet]
public JsonResult DistrictList(string Id)
{
    var districts = (from d in db.Districts
                        where d.State.StateName == Id
                        select new { d.DistrictName });
    return Json(new SelectList(districts, "DistrictName", "DistrictName"), JsonRequestBehavior.AllowGet);
}

意見:-

<select id="District"  name="District"></select>
<script type="text/jscript">
    $(function () {
        $('#State').change(function () {
            $.getJSON('/Application/DistrictList/' + $('#State').val(), function (data) {
                var items = '<option>Select a District</option>';
                $.each(data, function (i, districts) {
                    items += "<option value='" + districts.Text + "'>" + districts.Text + "</option>";
                });
                $('#District').html(items);
            });
        });
    });
</script>

それは正常に動作しますが、問題は、検証が失敗するたびに、「地区」DDL がデータを失うことです。ここでも、「State」で新しい選択を行う必要があり、「District」は Json 結果からデータを取得しました。これに対処する方法は?

4

1 に答える 1

0

最初のオプションにダミーの値を指定し、バックエンドで確認します。

var items = '<option value="-1">Select a District</option>';
于 2013-03-14T20:16:00.867 に答える