gpt4 book ai didi

c# - 编辑时未选择 MVC 级联下拉列表

转载 作者:行者123 更新时间:2023-12-01 07:59:26 25 4
gpt4 key购买 nike

我正在开发一个 MVC 4 Web 应用程序。其中一个 Razor View 有两个下拉列表。第一个下拉列表由传递到 View 的 ViewModel 数据填充。根据第一个下拉列表中选定的 ID(级联),使用 JQueryAjax 调用填充辅助下拉列表。

我的工作正常,但是,每当用户希望编辑现有记录时,我无法选择选定的辅助下拉列表值。

这是我的两个下拉列表的 Razor 代码

<div class="lbl_a">
Employer:
</div>
<div class="editor-field sepH_b">
@Html.DropDownListFor(model => model.Employer, Model.EmployerList, "Select", new { @class = "inpt_a" })
</div>

<div class="editor-label">
@Html.LabelFor(model => model.DirectorateID, "Directorate/ Service Group")
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.DirectorateID, Model.DirectorateList, "Select")
</div>

这是我的 JQuery 代码

$(document).ready(function () {

//Pre load on page load
onEmployerChange();

//Hide and show DIVS based on selection
$("#Employer").change(onEmployerChange);

function onEmployerChange() {

var dataPost = { orgID: val };
$.ajax({
type: "POST",
url: '/User/GetDirectorates/',
data: dataPost,
dataType: "json",
error: function () {
alert("An error occurred." + val);
},
success: function (data) {
var items = "";
$.each(data, function (i, item) {
items += "<option value=\"" + item.Value + "\">" + item.Text + "</option>";
});

$("#DirectorateID").html(items);
}
});

}
}

});

当用户从第一个下拉列表中选择一个值时,所选 ID 将传递到用户 Controller 内的 GetDirectorates 操作。

这是我的 GetDirectorates 操作,它返回 Json 数据

public ActionResult GetDirectorates(string orgID)
{
if (String.IsNullOrWhiteSpace(orgID))
orgID = "0";

var Directorates = _ListService.GetListItemsByOrganisationID(Convert.ToInt32(orgID));

List<SelectListItem> directorateList = new List<SelectListItem>();
directorateList.Add(new SelectListItem() { Text = "Select", Value = "" });

foreach (var directorate in Directorates)
{
directorateList.Add(new SelectListItem() { Text = directorate.description, Value = directorate.listItemID.ToString(), Selected = false });
}

return Json(new SelectList(directorateList, "Value", "Text"));
}

每当用户希望编辑现有记录时,我都会传递第一个和第二个下拉列表的值。两个下拉列表都按预期填充了正确的数据,但是,从未选择第二个下拉列表的选定值。

这是用户在尝试编辑现有记录时调用的“编辑”操作的缩短版本,但显示正在传递的两个下拉列表选定值。

public ActionResult EditNonMember(int id, string feedback, string courseDateID, string courseID)
{
//code to retrieve data here

vm.Employer = UserDetails.Employer;
vm.DirectorateID = UserDetails.DirectorateID;

return View(vm);
}

有人可以帮我解决这个问题吗?

谢谢。

最佳答案

您需要获取已保存雇主 ID 的董事会列表,并设置 DirectorateList 集合,然后设置 DirectorateID(来自已保存的记录);

public ActionResult EditNonMember(int id, string feedback, string courseDateID, 
string courseID)
{
//code to retrieve data here
var userDetails=repositary.GetUserFromSomeId(id);
vm.Employers=GetEmployers();
vm.Employer = userDetails.Employer;
vm.DirectorateList=GetDirectorateListForEmployer(userDetails.Employer);
vm.DirectorateID = userDetails.DirectorateID;

return View(vm);
}
private List<SelectListItem> GetEmployers()
{
// to do : Return all employers here in List<SelectListItem>
}
private List<SelectListItem> GetDirectorateListForEmployer(int employerId)
{
// to do : Return all Directorates for the selected employer
}

关于c# - 编辑时未选择 MVC 级联下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21135352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com