當我們選擇第一個需要更新第二個時,我有兩個下拉菜單。
下面是我的看法:部分視圖無法正常渲染
@model HostingManager.Models.ContractManager
@{
ViewBag.Title = "CustomCreate";
}
@Html.Partial("_GroupDDL" , Model)
@Html.Partial("SelectClient", Model)
@Html.Partial("SelectContract", Model)
下面是第一個下拉(局部圖:_GroupDDL
)
@model HostingManager.Models.ContractManager
@using (Ajax.BeginForm("SelectClient", "Contracts", new AjaxOptions { UpdateTargetId = "IClients" }))
{
@Html.DropDownListFor(
m => m.SelectedGroupId,
new SelectList(Model.IGroups, "id", "name"),
string.Empty
)
}
<script type="text/javascript">
$('#SelectedGroupId').change(function() {
$(this).parents('form').submit();
});
</script>
下面是第二個下拉(局部圖:SelectClient
)
@model HostingManager.Models.ContractManager
@if (Model.IClients != null && Model.IClients.Count() > 0)
{
using (Ajax.BeginForm("SelectContracts", "Contracts", new AjaxOptions { UpdateTargetId = "IContracts" }))
{
@Html.HiddenFor(m => m.SelectedGroupId)
@Html.DropDownListFor(
m => m.SelectedClientId,
new SelectList(Model.IClients, "id", "cname"),
string.Empty
)
}
}
<script type="text/javascript">
$('#SelectedClientId').change(function() {
$(this).parents('form').submit();
});
</script>
以下是我的控制器操作:
public ActionResult CustomCreate()
{
ContractManager CM = new ContractManager();
CM.IGroups = db.groups.ToList();
return View(CM);
}
[HttpPost]
public ActionResult SelectClient(int? SelectedGroupId)
{
ContractManager CM = new ContractManager();
CM.IClients = new List();
if (SelectedGroupId.HasValue)
{
CM.IClients = db.client.ToList();
}
return PartialView("SelectClient", CM);
}
現在的問題:
在調試模式下,當我選擇第一個DDL。控制是通過值來到第二個DDL,但第二個DDL沒有出現在視圖上。即我們無法在UI上看到第二個DDL。
我已經在我的佈局中添加了ajax腳本,並且在web.config
中也啓用了。 如果我能克服這個問題,我會過濾第二個DDL。
你爲什麼僅僅爲一個DDL使用部分視圖和ajax表單提交? – Sharun 2013-04-09 09:11:58