“部分视图上的隐藏对象”窗体不包含任何元素

本文关键字:何元素 包含任 元素 窗体 视图 对象 隐藏 | 更新日期: 2023-09-27 18:36:24

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

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

“部分视图上的隐藏对象”窗体不包含任何元素

我一直必须列出我试图执行与您正在执行的相同绑定逻辑的对象的每个属性。

考虑如何缩短它,你可以在你的观点中尝试这个:

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

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

.hiddenProperty
{
display: none;
}

或者使用 jQuery 隐藏属性:

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