use*_*698 6 asp.net-mvc webgrid razor
简单问:如何让文本框显示值.item.LastName上的代码失败
@model List<Mvc2010_11_12.Models.Employee>
@{
var grid = new WebGrid(source: Model,defaultSort: "FirstName",rowsPerPage: 3);
}
<div id="grid1">
@grid.GetHtml(columns: grid.Columns(
grid.Column("LastName"),
grid.Column(format: (item) => Html.TextBox("LastName", item.LastName))
))
</div>
Run Code Online (Sandbox Code Playgroud)
小智 6
扩展方法(即Html.TextBox)不适用于动态对象(即项目)......这是c#的限制.
你有几个选择:
格式: InputExtensions.TextBox(Html, "Last Name", item.LastName) // static call
格式: Html.TextBox("Last Name", (object)item.LastName) // cast as non-dynamic object
格式: <input type="text" name="LastName" value="@item.LastName" /> // avoid extensions
另外,我相信有一个带有"item"参数的固有lambda - 你不应该自己声明这个.
相当复杂但有效:
@helper TextField(Employee employee, HtmlHelper<IEnumerable<Employee>> html)
{
@html.TextBoxFor(x => employee.LastName)
}
<div id="grid1">
@grid.GetHtml(columns: grid.Columns(
grid.Column("LastName"),
grid.Column(format: item => TextField(item.Value, Html))
))
</div>
Run Code Online (Sandbox Code Playgroud)
也许有更好的方法。仍在学习 Razor 语法,坦率地说,在使用MVCContrib Grid之后,我对 WebGrid 帮助器有点失望。
| 归档时间: |
|
| 查看次数: |
19617 次 |
| 最近记录: |