Asp.net mvc webgrid asp.net mvc3的发布项目
我有这些DTOAsp.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
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")
)