Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc webgrid asp.net mvc3的发布项目_Asp.net Mvc_Asp.net Mvc 3_Webgrid - Fatal编程技术网

Asp.net mvc webgrid asp.net mvc3的发布项目

Asp.net mvc webgrid asp.net mvc3的发布项目,asp.net-mvc,asp.net-mvc-3,webgrid,Asp.net Mvc,Asp.net Mvc 3,Webgrid,我有这些DTO public class Header { public int HeaderId{get;set;} public int Description{get;set;} public List<HeaderItem> HeaderItems{get;set;} } public class HeaderItem { public int HeaderItemId{get;set;} public string DetailD

我有这些DTO

public class Header
{
    public int HeaderId{get;set;}
    public int Description{get;set;}
    public List<HeaderItem> HeaderItems{get;set;}

}

public class HeaderItem
{
    public int HeaderItemId{get;set;}
    public string DetailDescription{ get; set; }
    public bool Selected{ get; set; }
}
这个html

  @using (Html.BeginForm("PostMethod", "Controller", FormMethod.Post, new { id = "form" }))

{

@Html.TextBoxFor(x => x.Description)    

var grid = new WebGrid(Model.HeaderItems);
    }
    @grid.GetHtml(tableStyle: "grid",
    htmlAttributes: new { id = "grid" },
    columns: grid.Columns(
    grid.Column("Selected", "Seç", format: (item) => Html.CheckBox(String.Format("Selected_{0}", (int)item.HeaderItemId), false)),
    grid.Column("HeaderItemId", "", format: (item) => Html.Hidden("HeaderItemId")),
    grid.Column("DetailDescription", "Description")
    )
}

因此,该网格有一个复选框和一个HiddenField,用于保存每行的HeaderItemId值

我想发布我的表格并填写Header类的属性HeaderItems


如何实现此解决方案?

尝试更改
Html的
Html.CheckBox
,以及
Html.HiddenFor的
HiddenFor

它将是:

@grid.GetHtml(tableStyle: "grid",
    htmlAttributes: new { id = "grid" },
    columns: grid.Columns(
             grid.Column("Selected", "Seç", format: (item) => Html.CheckBoxFor(m => item.HeaderItemId)),
             grid.Column("HeaderItemId", "", format: (item) => Html.Hidden(m => item.HeaderItemId)),
             grid.Column("DetailDescription", "Description")
    )
)
我还没有测试它,我想

我怎样才能找到这个解决方案

像这样:

columns: grid.Columns(
    grid.Column(
        "Selected", 
        "Seç", 
        format: 
            @<text>
                @{ var index = Guid.NewGuid().ToString(); }
                @Html.Hidden("HeaderItems.Index", index)
                @Html.Hidden("HeaderItems[" + index + "].HeaderItemId", (int)item.HeaderItemId)
                @Html.CheckBox("HeaderItems[" + index + "].Selected", (bool)item.Selected)
            </text>
    ),
    grid.Column("HeaderItemId")
    grid.Column("DetailDescription", "Description")
)
columns:grid.columns(
网格.柱(
“选定”,
“塞萨”,
格式:
@
@{var index=Guid.NewGuid().ToString();}
@隐藏(“HeaderItems.Index”,Index)
@隐藏(“HeaderItems[“+index+”].HeaderItemId”,(int)item.HeaderItemId)
@复选框(“HeaderItems[“+index+”].Selected”,(bool)项.Selected)
),
格线柱(“柱头柱”)
网格栏(“详细说明”、“说明”)
)

不,这不起作用。您无法在
item
上分派扩展方法,因为
item
是动态的。是否有方法在PartialView中实现此功能?
columns: grid.Columns(
    grid.Column(
        "Selected", 
        "Seç", 
        format: 
            @<text>
                @{ var index = Guid.NewGuid().ToString(); }
                @Html.Hidden("HeaderItems.Index", index)
                @Html.Hidden("HeaderItems[" + index + "].HeaderItemId", (int)item.HeaderItemId)
                @Html.CheckBox("HeaderItems[" + index + "].Selected", (bool)item.Selected)
            </text>
    ),
    grid.Column("HeaderItemId")
    grid.Column("DetailDescription", "Description")
)