我有一个包含表格的局部视图。我试图在隐藏的输入元素中传递列表,这样当模型状态无效时,它可以正确地回传。问题是隐藏的输入实体不包含任何数据(它不是空的,只是空的)。
我的父视图包含一个视图模型,其中包含两个视图模型(1表示父项的子项1)
public class UsersModel
{
public CreateUserModel CreateModel { get; set; }
public IEnumerable<UserTableModel> UserData { get; set; }
}
我父视图的控制器操作(GET)同时设置CreateModel和UserData,并将UserData
存储到TempData
变量中,以便在案例中将其传递回父视图模型状态无效。
我的子视图/部分视图包含以下内容
@model APGame.Client.ViewModels.CreateUserModel
@using (Html.BeginForm("Users", "Admin", FormMethod.Post, new {role = "form", autocomplete = "off"}))
{
@Html.HiddenFor(m => m.Roles)
@Html.HiddenFor(m => m.Institutions)
@Html.HiddenFor(m => m.InvestigatorGroups)
@Html.HiddenFor(m => m.Participation)
@Html.HiddenFor(m => m.FamilyGroups)
如果模型状态无效,我的POST控制器操作会执行以下操作
var userModel = new UsersModel()
{
UserData = TempData["UserData"] as IEnumerable<UserTableModel>,
CreateModel = model
};
return View("Users", userModel);
答案 0 :(得分:0)
我总是要列出我试图做你正在做的相同绑定逻辑的对象的每个属性。
考虑如何缩短这一点,你可以在你看来尝试这个:
@Html.EditorForModel(m => m.Roles, "Role", new {@class="hiddenProperty"})
并确保包含此CSS以隐藏这些属性:
.hiddenProperty
{
display: none;
}
或使用jQuery隐藏属性:
$('.hiddenProperty').hide();