Asp.net mvc 4 发布表单时,我的列表将为空

Asp.net mvc 4 发布表单时,我的列表将为空,asp.net-mvc-4,Asp.net Mvc 4,我对MVC有一些问题,我将试着描述一下。我的模型里有两个班 public class ApplicationPermissionVM { public ApplicationPermission Permission { get; set; } public bool IsSelected { get; set; } } public class RoleAndPermissonsModel { //Constructor ski

我对MVC有一些问题,我将试着描述一下。我的模型里有两个班

public class ApplicationPermissionVM
    {
        public ApplicationPermission Permission { get; set; }
        public bool IsSelected { get; set; }
    }

public class RoleAndPermissonsModel
{
        //Constructor skipped

        public ApplicationRole ApplicationRole { get; set; }
        public IEnumerable<ApplicationPermissionVM> Permissions { get; set; }
}
视图:

@model EO.Core.WebUI.Models.roleandpermissonmodel
@使用(Html.BeginForm(“NewRole”、“PermissionRole”、FormMethod.Post、new{id=“frmNewRole”}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
应用程序角色
@LabelFor(model=>model.ApplicationRole.Name)
@EditorFor(model=>model.ApplicationRole.Name)
@Html.ValidationMessageFor(model=>model.ApplicationRole.Name)
@DisplayNameFor(model=>model.IsSelected)
@foreach(Model.Permissions中的var项)
{
@EditorFor(modelItem=>item.IsSelected)
@DisplayFor(modeleItem=>item.Permission.Name);
}

}
您需要手动循环浏览列表并像

<input type="text" 
       id="Permissions[0].IsSelected" 
       name="Permissions[0].IsSelected" value="" />
或者,您可以轻松地创建一个
视图模型
,并使用该模型将模型链接到视图

注意:我想知道,如果您的列表总是空的(当您传递一个空的/null列表时),为什么要循环使用
Model.Permissions


为了进行“编辑”视图,循环代码应为:

@for(int i = 0; i < Model.Permissions.Count; i++)
{
    <tr>
        <td><input type="checkbox" 
                   @(Permissions[i].IsSelected ? "checked='checked'" : "")
                   id="Permissions[@(i)].IsSelected" 
                   name="Permissions[@(i)].IsSelected" /></td>
        <td><input type="text" 
                   id="Permissions[@(i)].Permission.Name" 
                   name="Permissions[@(i)].Permission.Name"
                   value="@(Permissions[i].Permission.Name)" /></td>
    </tr>
}
@for(int i=0;i

如果选中了复选框,则只需在复选框中选中
,并将权限名称填入其他输入。

您需要手动循环列表,然后像

<input type="text" 
       id="Permissions[0].IsSelected" 
       name="Permissions[0].IsSelected" value="" />
或者,您可以轻松地创建一个
视图模型
,并使用该模型将模型链接到视图

注意:我想知道,如果您的列表总是空的(当您传递一个空的/null列表时),为什么要循环使用
Model.Permissions


为了进行“编辑”视图,循环代码应为:

@for(int i = 0; i < Model.Permissions.Count; i++)
{
    <tr>
        <td><input type="checkbox" 
                   @(Permissions[i].IsSelected ? "checked='checked'" : "")
                   id="Permissions[@(i)].IsSelected" 
                   name="Permissions[@(i)].IsSelected" /></td>
        <td><input type="text" 
                   id="Permissions[@(i)].Permission.Name" 
                   name="Permissions[@(i)].Permission.Name"
                   value="@(Permissions[i].Permission.Name)" /></td>
    </tr>
}
@for(int i=0;i

如果选中了该复选框,则只需将其选中,然后将权限名称填入其他输入。

您的视图和控制器在哪里?抱歉,我忘记了,但已解决。您的视图和控制器在哪里?抱歉,我忘了,但已解决。THX。它工作得很好!我也有一个构造函数,但我忘了在这里写,所以我的权限不是空的。是否有其他解决方案显示我的模型。权限而不循环?还有一个问题,复选框需要设置模型。权限[i]。IsSelected属性。我能做什么?你看过我的便条了吗?您正在执行
\u model=new roleandpermissonmodel();返回视图(_模型)您正在设置一个空对象,列表将始终为空。。。否?我已为您的information.Thx添加了编辑视图循环代码。很抱歉理解错误,我试图告诉您我的列表不是空的:)我的构造函数在此示例中被跳过,但存在,因此权限列表是从数据库填充的,我想创建一个UI,用户可以在其中选择分配给角色的权限。IsSelected属性将在选择权限的控制器中显示form me.:)谢谢你的帮助,真的很有帮助;)谢谢。它工作得很好!我也有一个构造函数,但我忘了在这里写,所以我的权限不是空的。是否有其他解决方案显示我的模型。权限而不循环?还有一个问题,复选框需要设置模型。权限[i]。IsSelected属性。我能做什么?你看过我的便条了吗?您正在执行
\u model=new roleandpermissonmodel();返回视图(_模型)您正在设置一个空对象,列表将始终为空。。。否?我已为您的information.Thx添加了编辑视图循环代码。很抱歉理解错误,我试图告诉您我的列表不是空的:)我的构造函数在此示例中被跳过,但存在,因此权限列表是从数据库填充的,我想创建一个UI,用户可以在其中选择分配给角色的权限。IsSelected属性将在选择权限的控制器中显示form me.:)谢谢你的帮助,真的很有帮助;)
public class RoleAndPermissonsModel
{
    public RoleAndPermissonsModel() {
        this.Permissions = new List<ApplicationPermissionVM>();
    }

    public ApplicationRole ApplicationRole { get; set; }
    public IEnumerable<ApplicationPermissionVM> Permissions { get; set; }
}
@for(int i = 0; i < Model.Permissions.Count; i++)
{
    <tr>
        <td><input type="checkbox" 
                   @(Permissions[i].IsSelected ? "checked='checked'" : "")
                   id="Permissions[@(i)].IsSelected" 
                   name="Permissions[@(i)].IsSelected" /></td>
        <td><input type="text" 
                   id="Permissions[@(i)].Permission.Name" 
                   name="Permissions[@(i)].Permission.Name"
                   value="@(Permissions[i].Permission.Name)" /></td>
    </tr>
}