我正在构建一个应用程序,用于在数据库中存储有关Job的信息。我正在处理表单以添加信息,所需的三个属性是公司,部门和组织单位。分部属于公司,组织属于组织。单位属于一个司。考虑到这种关系,我希望每个都有三个下拉列表,其中Division列表将取决于所选的公司和组织。单位清单将取决于所选的部门。
我尝试使用部分视图和AJAX实现它,只要在下拉列表中更改选项,就会刷新它。每当公司选择发生变化时,我都可以刷新部门列表,但是组织。无论何时更改分区选择,单位列表都保持不变。
见下文:
以下是处理变更请求的脚本:
$(function () {
$('#SelectedCompanyID').change(function () {
// when the selection of the Company changes, get the new value
var value = $(this).val();
// and send it as AJAX request to the newly created action
$.ajax({
url: '@Url.Action("DivisionDDL")',
type: 'POST',
data: { companyID: value },
success: function (result) {
// when the AJAX succeeds refresh the ddl container with
// the partial HTML returned by the DivisionDDL controller action
$('#divisionDDLContainer').html(result);
}
});
});
$('#SelectedDivisionID').change(function () {
// when the selection of the Division changes, get the new value
var value = $(this).val();
// and send it as AJAX request to the newly created action
$.ajax({
url: '@Url.Action("OrgUnitDDL")',
type: 'POST',
data: { divisionID: value },
success: function (result) {
// when the AJAX succeeds refresh the ddl container with
// the partial HTML returned by the OrgUnitDDL controller action
$('#orgUnitDDLContainer').html(result);
}
});
});
});
以下是使用的表单部分:
@Html.DropDownListFor(m => m.SelectedCompanyID, Model.ListCompany)
<div id="divisionDDLContainer">
@Html.Partial("DivisionDDL", Model)
</div>
<div id="orgUnitDDLContainer">
@Html.Partial("OrgUnitDDL", Model)
</div>
以下是部分观点:
OrgUnitDDL:
@model MyApp.Models.ViewModelJobDetails
@Html.DropDownListFor(m => m.SelectedOrgUnitID, Model.ListOrgUnit)
DivisionDDL:
@model MyApp.Models.ViewModelJobDetails
@Html.DropDownListFor(m => m.SelectedDivisionID, Model.ListDivision)
以下是控制器中的方法:
public ActionResult DivisionDDL(string companyID)
{
ViewModelJobDetails vm = new ViewModelJobDetails();
vm.lDivision = Maintenance.GetDivisionList(companyID);
return PartialView(vm);
}
public ActionResult OrgUnitDDL(string divisionID)
{
ViewModelJobDetails vm = new ViewModelJobDetails();
vm.lOrgUnit = Maintenance.GetOrgUnitList(divisionID);
return PartialView(vm);
}
我试过看看组织的功能。单位列表可以自行运行(通过取出AJAX请求的第一部分并填写分部下拉列表,其中包含所有值,无论公司选择哪个),它都有效。但是当我将两个请求放在一起时,只有Division功能可以工作。
有没有人对可能出现的问题有任何想法?
更新经过更多测试后,我意识到,如果我未选中公司下拉列表并从下拉列表中选择一个部门,则组织。单位列表将按预期填充。但是一旦我改变公司,组织的功能。单位列表将消失,但是分区列表将按预期填充。