我的一个名为 AVC 的 linq to sql 对象有一个基本的 mvc 编辑页面,它与 MemberKommuns 有一对多的关系,我想为用户显示所有 MemberKommuns 的列表,以便他们可以选择他们想要的。
编辑页面的get函数
public ActionResult Edit(Guid id)
{
AVC avc = DatabaseManager.GetAVC(id); //get avc by id
List<MemberKommun> kommuns = DatabaseManager.GetMemberKommuns(); //get all MemberKommuns
//turn list into list of listItems for the drop down control
List<SelectListItem> listItems = new List<SelectListItem>();
for (int i = 0; i < kommuns.Count; i++)
{
listItems.Add(new SelectListItem()
{
Selected = kommuns[i].Id == avc.MemberKommunId,
Text = kommuns[i].Name,
Value = kommuns[i].Id.ToString(),
});
}
//send data to page as tuple
Tuple<AVC, List<SelectListItem>> data = new Tuple<AVC, List<SelectListItem>>(avc, listItems);
return View(data);
}
html页面的缩短版本
@model Tuple<AVC, List<SelectListItem>>
@Html.HiddenFor(model => model.Item1.Id)
@Html.DropDownListFor(model => model.Item1.MemberKommunId, Model.Item2, new { size = 10 })
@Html.EditorFor(model => model.Item1.Name)
<input type="submit" value="Edit" />
编辑页面的发布版本。仅将 avc 打印为 json 的虚拟函数
[HttpPost]
public string Edit(AVC viewData)
{
return Helper.ToJson(viewData);
}
json数据
{
"Id": "3ad40e34-c660-4226-87e0-fd7c2dca0e8d",
"MemberKommunId": "00000000-0000-0000-0000-000000000000",
"Name": null,
}
如 json 数据所示,id 被正确绑定,但该字段的其余部分获取它们的默认值。在完整的代码中,AVC 有更多的字段,它们都得到了它们的默认值,为了清楚起见,我删除了它们。
我不需要在 post 函数中获取 MemberKommuns 列表。我怎样才能让活页夹在 post 函数中填充 AVC 的其余部分?