如何根据第一个下拉选择值ASP.NET MVC3绑定第二个下拉列表

时间:2012-01-10 11:50:25

标签: jquery asp.net-mvc-3

我有这个观点。

    @if (@Model.QuestionType == 12)
    { 
    <div data-role="fieldcontain">
    @using (Ajax.BeginForm("SaveFormBuilder", "GetQuestion", new { QuestionNo = Model.QuestionNo, PreviousQuestionNo = Model.PreviousQuestion }, new AjaxOptions { }, new { id = "myform_" + @Model.QuestionNo }))
    {
        @Html.AntiForgeryToken() 
        <fieldset id="@(Model.QuestionNo)_fld"> 
            <div id="country" style="display: @(Model.FormBuilder.IsCountryDisplay == true ? "block" : "none")">
                <label class="select">@Model.FormBuilder.CountryText
                </label>
                <select id="countrylstdrp" name="Country" required="@(Model.FormBuilder.IsCountryRequired == true ? "true" : "false")" onchange="FillStates()">
                    @if (Model.FormBuilder.CountryList != null)
                    {
                        <option value="-1">--Select--</option>
                        foreach (var country in Model.FormBuilder.CountryList)
                        {
                        <option value="@country.CountryId">@country.CountryName</option>
                        }
                    }
                </select> 
            </div>
            <div id="state" style="display: @(Model.FormBuilder.IsCountryDisplay == true ? "block" : "none")">
                <label class="select">@Model.FormBuilder.StateText
                </label>
                <select id="statelistdrp" name="State" required="@(Model.FormBuilder.IsStateRequired == true ? "true" : "false")">
                    <option id="-1" value="select">----Select--</option>
                </select> 
            </div>
            <br />
        </fieldset>  
        <div data-role="none" style="float: right">
            <input type="submit" id="@(Model.QuestionNo)_chknone" data-inline="true"  onclick="return SaveCheckBoxNew(this);" value="@Model.SubmitButtonText" />
        </div> 
    }
</div>
}

加载此视图时,我绑定了所有国家/地区的值。我的任务是,当用户更改国家/地区时,它应该加载受尊重的状态。 在我的控制器中

    [HttpPost]
    public ActionResult LoadStates(int countryId)
    {
         List<State> lstate=ques.GettheStates(countryId);
         return Json(lstate);
    }

我的模特是         公共阶层国家     {         private int _stateId;         私有字符串_stateName;

    public string StateName
    {
        get { return _stateName; }
        set { _stateName = value; }
    }

    public int StateId
    {
        get { return _stateId; }
        set { _stateId = value; }
    }
}

通过JQuery我称之为Controller Action。

   function FillStates() {
        var countryId = $(countrylstdrp).val();
        $.ajax({
            url: 'LoadStates',
            type: 'POST',
            data: JSON.stringify({ countryId: countryId }),
            dataType: 'json',
            contentType: 'application/json',
            success: function (data) {
                alert('success');
            } 
        });
    }

但它没有调用控制器动作是什么原因? 我怎么能在mvc3中这样做。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

请参阅以下链接以获取级联下拉列表。希望这个链接可以帮助你。

http://highoncoding.com/Articles/770_Implementing_Dynamic_DropDownList_in_ASP_NET_MVC_3_Framework.aspx

谢谢, -Naren