asp.net mvc2 c# - 根据另一个下拉列表中的选定值填充下拉列表

时间:2014-12-04 17:15:46

标签: asp.net json asp.net-mvc-2

当用户在国家/地区下拉列表中选择国家/地区时,我正在尝试填写州下拉列表。我正在使用json。现在,我得到错误respose - [object XMLHttpRequest]。

我花了很多时间来解决这个问题。请不要发布或提供更多新方法,因为我已经遵循了很多方法。所以,请告诉我以下代码是否有任何问题。

提前致谢

我的观看代码是

    <% using (Html.BeginForm()) {%>
    <%: Html.ValidationSummary(true) %>

    <fieldset>
        <legend>Fields</legend>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.Name) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.Name) %>
            <%: Html.ValidationMessageFor(model => model.Name) %>
        </div>

        <div class="editor-label">Country</div>
        <div class="editor-field">
            <%: Html.DropDownList("country", ViewData["countries"] as SelectList, "Select Contry")%>
        </div>

        <div class="editor-label">State</div>
        <div class="editor-field">

            <select id="state"></select>

        </div>           

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>

<% } %>

<div>
    <%: Html.ActionLink("Back to List", "Index") %>
</div>

<script type="text/javascript" src="../../Scripts/jquery-1.4.1.js"></script>


<script type="text/javascript">

    $(document).ready(function () {

        $("#country").change(function () {

            if ($("#country").val() != "") {


                $.ajax({
                    url: 'http://localhost:52970/State/GetState',
                    data: { Sel_Country: $("#country").val() },
                    cache: false,
                    type: "POST",
                    success: function (data) {

                        alert(data.length);

                        var markup = "<option value='0'>Select City</option>";
                        for (var x = 0; x < data.length; x++) {
                            markup += "<option value=" + data[x].Value + ">" + data[x].Text + "</option>";
                        }
                        $("#state").html(markup).show();
                    },
                    error: function (reponse) {
                        alert("error : " + reponse);
                    }
                });
            }
        });
    });

我的GetState方法:

    public JsonResult GetState(string Sel_Country)
    {
      //stateRepository db = new CountryService();
      JsonResult result = new JsonResult();
      var vStateList=stateRepository.GetStateByCountryId(Convert.ToInt32(Sel_Country));

        result.Data = vStateList;
        result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
        return result;
    }

1 个答案:

答案 0 :(得分:0)

经过大量搜索后,我发现问题出在GetState操作方法中。问题实际上是循环引用。这个link将更多地讲述这个问题。我实际创建了一个名为StateList的新类,并使GetState方法调用StateList类而不是常规的State模型类。

谢谢大家。