局部视图没有正确呈现
本文关键字:视图 局部 | 更新日期: 2023-09-27 18:08:06
我有两个下拉列表,当我们选择第一个时,我们需要更新第二个。
以下是我的观点:
@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。
除了完善示例之外,您还可以使用jQuery.post:
在_GroupDDL部分视图中执行以下操作:<script type="text/javascript">
$('#SelectedGroupId').change(function () {
$.post('@Url.Action("SelectClient", "Contracts")', {SelectedGroupId: $(this).val()}, function(data) {
$('#SelectedClientId').html(data);
});
});
</script>
它将调用控制器的SelectClient动作每次你改变SelectedGroupId ddl,它将返回SelectedClientId的html与所有基于父/主ddl选择的选项。