在MVC3中有条件地填充partialview控件

时间:2012-02-21 10:41:46

标签: javascript jquery asp.net-mvc-3 partial-views

创建一个部分视图以输入一些个人详细信息。我必须包含2个下拉列表,1个用于国家/地区,其他用于州。当我选择国家/地区作为美国时,它希望从DB填充所有州名。如果我们选择其他国家/地区我想要将状态的下拉列表替换为文本框。如何使其成为可能?

感谢。

1 个答案:

答案 0 :(得分:2)

我的建议是使用jquery ajax请求根据国家/地区值填充下拉列表选项。 ajax请求可以指向另一个将返回下拉列表或文本框的PartialView,具体取决于参数...

如果你在实施方面遇到任何麻烦,请告诉我,我会很乐意帮助你......


控制器中的动作:

public ActionResult StateNames(string country)
{
    if(country == "US")
    {
        var model = GetArrayOfUsStates();
        return View(model);
    }
    else
    {
        var model = string[0];
        return View(model);
    }
}

下拉列表的部分视图:

@model string[]

@if(Model.Length == 0)
{
    <input type="text" name="state" />
}
else
{
    <select name="state">
        @foreach(var state in Model)
        {
            <option value="@state">@state</option>
        }
    </select>
}

您的网页结构:

<select id="countryDDL">
   ...
</select>
<div id="stateDDLHolder">
</div>

你的jQuery代码下拉:

$.ajax({ 
         url: '/YourController/StateNames/' + $('#countryDDL').val(),
         success: function(data) { $('#stateDDLHolder').html(data); }
});