部分视图表单上的HiddenFor不包含任何元素

时间:2016-02-25 16:44:57

标签: c# asp.net asp.net-mvc razor views

我有一个包含表格的局部视图。我试图在隐藏的输入元素中传递列表,这样当模型状态无效时,它可以正确地回传。问题是隐藏的输入实体不包含任何数据(它不是空的,只是空的)。

我的父视图包含一个视图模型,其中包含两个视图模型(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);

1 个答案:

答案 0 :(得分:0)

我总是要列出我试图做你正在做的相同绑定逻辑的对象的每个属性。

考虑如何缩短这一点,你可以在你看来尝试这个:

@Html.EditorForModel(m => m.Roles, "Role", new {@class="hiddenProperty"})

并确保包含此CSS以隐藏这些属性:

.hiddenProperty
{
display: none;
}

或使用jQuery隐藏属性:

$('.hiddenProperty').hide();