Asp.net mvc 5 在调用“之前填充模型”;邮政「;方法
我有以下型号:Asp.net mvc 5 在调用“之前填充模型”;邮政「;方法,asp.net-mvc-5,Asp.net Mvc 5,我有以下型号: public class ProjectMemberUserRolesViewModel { public List<ProjectMemberUserRolesElementViewModel> Elements { get; set; } } public class ProjectMemberUserRolesElementViewModel { public string AccessType { get; set; } public
public class ProjectMemberUserRolesViewModel
{
public List<ProjectMemberUserRolesElementViewModel> Elements { get; set; }
}
public class ProjectMemberUserRolesElementViewModel
{
public string AccessType { get; set; }
public bool Delete { get; set; }
public bool Create { get; set; }
public bool Edit { get; set; }
public bool Read { get; set; }
}
视图模型:
@model ProjectMemberUserRolesViewModel
@{
ViewBag.Title = "UserRoles";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>UserRoles</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
foreach (var item in Model.Elements)
{
<div>
@Html.DisplayFor(modelItem => item.AccessType)
</div>
<div>
@Html.CheckBoxFor(modelItem => item.Delete) @Html.DisplayNameFor(modelItem => item.Delete)
@Html.CheckBoxFor(modelItem => item.Create) @Html.DisplayNameFor(modelItem => item.Create)
@Html.CheckBoxFor(modelItem => item.Edit) @Html.DisplayNameFor(modelItem => item.Edit)
@Html.CheckBoxFor(modelItem => item.Read) @Html.DisplayNameFor(modelItem => item.Read)
</div>
}
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
}
问题是POST方法的ProjectMemberUserRolesViewModel模型参数为null。如果我查看页面源代码,就会发现foreach元素没有前缀:
<form action="/ProjectMember/UserRoles/1" method="post"><input name="__RequestVerificationToken" type="hidden" value="toGniflvXh6n56oubtdZZazRAAsCxGID9X9XoQaj8ItViXZiIx3ouYNbGZfi6QPdRQAU1tU8wRwdeojxs2dtpy-NlKZ1ClgxicV0nSSwHsIclXYA8FHYY6QDmku3Wd4ptIPaJ_amu9FmKV5TwI3Ijg2" /><input id="item_AccessType" name="item.AccessType" type="hidden" value="Child Projects" /> <div>
Child Projects
</div>
<div>
<input data-val="true" data-val-required="The Delete field is required." id="item_Delete" name="item.Delete" type="checkbox" value="true" /><input name="item.Delete" type="hidden" value="false" /> Delete
<input data-val="true" data-val-required="The Create field is required." id="item_Create" name="item.Create" type="checkbox" value="true" /><input name="item.Create" type="hidden" value="false" /> Create
<input data-val="true" data-val-required="The Edit field is required." id="item_Edit" name="item.Edit" type="checkbox" value="true" /><input name="item.Edit" type="hidden" value="false" /> Edit
<input data-val="true" data-val-required="The Read field is required." id="item_Read" name="item.Read" type="checkbox" value="true" /><input name="item.Read" type="hidden" value="false" /> Read
</div>
<input id="item_AccessType" name="item.AccessType" type="hidden" value="File Archive" /> <div>
File Archive
</div>
<div>
<input id="item_Delete" name="item.Delete" type="checkbox" value="true" /><input name="item.Delete" type="hidden" value="false" /> Delete
<input id="item_Create" name="item.Create" type="checkbox" value="true" /><input name="item.Create" type="hidden" value="false" /> Create
<input id="item_Edit" name="item.Edit" type="checkbox" value="true" /><input name="item.Edit" type="hidden" value="false" /> Edit
<input id="item_Read" name="item.Read" type="checkbox" value="true" /><input name="item.Read" type="hidden" value="false" /> Read
</div>
<input id="item_AccessType" name="item.AccessType" type="hidden" value="Project Member" /> <div>
Project Member
</div>
<div>
<input id="item_Delete" name="item.Delete" type="checkbox" value="true" /><input name="item.Delete" type="hidden" value="false" /> Delete
<input id="item_Create" name="item.Create" type="checkbox" value="true" /><input name="item.Create" type="hidden" value="false" /> Create
<input id="item_Edit" name="item.Edit" type="checkbox" value="true" /><input name="item.Edit" type="hidden" value="false" /> Edit
<input id="item_Read" name="item.Read" type="checkbox" value="true" /><input name="item.Read" type="hidden" value="false" /> Read
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</form>
儿童项目
删去
创造
编辑
阅读
档案馆
删去
创造
编辑
阅读
项目成员
删去
创造
编辑
阅读
如何正确查看代码
如何正确查看代码
通过将foreach
循环替换为for
:
for (var i = 0; i < Model.Elements.Count; i++)
{
<div>
@Html.DisplayFor(x => x.Elements[i].AccessType)
</div>
<div>
@Html.CheckBoxFor(x => x.Elements[i].Delete)
@Html.DisplayNameFor(x => x.Elements[i].Delete)
@Html.CheckBoxFor(x => x.Elements[i].Create)
@Html.DisplayNameFor(x => x.Elements[i].Create)
@Html.CheckBoxFor(x => x.Elements[i].Edit)
@Html.DisplayNameFor(x => x.Elements[i].Edit)
@Html.CheckBoxFor(x => x.Elements[i].Read)
@Html.DisplayNameFor(x => x.Elements[i].Read)
</div>
}
如何正确查看代码
通过将foreach
循环替换为for
:
for (var i = 0; i < Model.Elements.Count; i++)
{
<div>
@Html.DisplayFor(x => x.Elements[i].AccessType)
</div>
<div>
@Html.CheckBoxFor(x => x.Elements[i].Delete)
@Html.DisplayNameFor(x => x.Elements[i].Delete)
@Html.CheckBoxFor(x => x.Elements[i].Create)
@Html.DisplayNameFor(x => x.Elements[i].Create)
@Html.CheckBoxFor(x => x.Elements[i].Edit)
@Html.DisplayNameFor(x => x.Elements[i].Edit)
@Html.CheckBoxFor(x => x.Elements[i].Read)
@Html.DisplayNameFor(x => x.Elements[i].Read)
</div>
}
for (var i = 0; i < Model.Elements.Count; i++)
{
<div>
@Html.DisplayFor(x => x.Elements[i].AccessType)
</div>
<div>
@Html.CheckBoxFor(x => x.Elements[i].Delete)
@Html.DisplayNameFor(x => x.Elements[i].Delete)
@Html.CheckBoxFor(x => x.Elements[i].Create)
@Html.DisplayNameFor(x => x.Elements[i].Create)
@Html.CheckBoxFor(x => x.Elements[i].Edit)
@Html.DisplayNameFor(x => x.Elements[i].Edit)
@Html.CheckBoxFor(x => x.Elements[i].Read)
@Html.DisplayNameFor(x => x.Elements[i].Read)
</div>
}
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.EditorFor(x => x.Elements)
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
}
@model ProjectMemberUserRolesElementViewModel
<div>
@Html.DisplayFor(x => x.AccessType)
</div>
<div>
@Html.CheckBoxFor(x => x.Delete)
@Html.DisplayNameFor(x => x.Delete)
@Html.CheckBoxFor(x => x.Create)
@Html.DisplayNameFor(x => x.Create)
@Html.CheckBoxFor(x => x.Edit)
@Html.DisplayNameFor(x => x.Edit)
@Html.CheckBoxFor(x => x.Read)
@Html.DisplayNameFor(x => x.Read)
</div>