我正在使用 ASP.NET WebGrid 来显示对象集合并允许将新对象添加到集合中。
在使用 Webgrid 的视图中,我有一个添加按钮,使用该按钮我可以根据模板动态添加新行并附加到网格中。
我需要帮助,
1)如何在客户端将新行与WebGrid模型绑定。2) 如何使用模型上定义的 DataAnnotations 验证在 WebGrid 上启用验证。
以下是代码,
public class TestObject
{
public virtual int Id
{
get;
set;
}
[Required(ErrorMessageResourceName = "Required")]
[Display( Name = "Codee")]
public virtual string Code
{
get;
set;
}
[Required(ErrorMessageResourceName = "Required")]
[Display( Name = "Description")]
public virtual string Description
{
get;
set;
}
}
索引.html
@using (Html.BeginForm("Index", "Test", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary()
<div class="body-container">
<table class="form-grid">
<tr>
<td>
<input type="button" onclick="AddRow(); return false;">
</td>
</tr>
</table>
<table class="form-grid">
<tr>
<td>
<div id="partialregion">
@Html.Partial("_ListView", Model)
</div>
</td>
</tr>
</table>
<table id="newTemplate" style="display: none;">
<tr class="item">
<td>
<input type="hidden" id="cId" /></td>
<td>
<input type="text" id="code" />
</td>
<td>
<input type="text" id="description" />
</td>
</tr>
</table>
</div>
_ListView.HTML
@model IEnumerable<TestObject>
<div id="testGrid">
@{
var grid = new WebGrid(null, ajaxUpdateContainerId: "testGrid" , canSort: false);
grid.Bind(Model);
@MvcHtmlString.Create(
@grid.GetHtml(
tableStyle: "grid-table",
columns: grid.Columns(
grid.Column("",header:"",format : @<input id="hiddenId" type="hidden" value="@item.Id" />),
grid.Column("Code", header: "Code", format: @<input type="text" id="mCode" value="@item.Code" />),
grid.Column("Description", header: "Description", format: @<input type="text" id="mDesc" value="@item.Description" />)
)).ToString())
}
</div>