Tho*_*mas 19 c# webgrid asp.net-mvc-3
我的ASP.NET MVC3测试应用程序中有以下WebGrid.它显示了一个客户列表:
@grid.GetHtml(
tableStyle: "grid",
headerStyle: "head",
alternatingRowStyle: "alt",
columns: grid.Columns
(
grid.Column(format: (item) => Html.ActionLink("Edit", "Details", new { id = item.id })),
grid.Column("Address.CompanyName"),
grid.Column("Address.City")
)
)
Run Code Online (Sandbox Code Playgroud)
这里有趣的部分是我在第一列中添加的Edit-link.我想使用客户帐号而不是简单的"编辑"测试.但是,这给我带来了很多问题.
我试过了:
grid.Column(format: (item) => Html.ActionLink(item.AccountNumber.ToString(), "Details", new { id = item.id })),
Run Code Online (Sandbox Code Playgroud)
但是,似乎有一些我不明白这是如何工作的,因为我一直得到这个例外:
CS1502: The best overloaded method match for 'System.Web.Helpers.WebGrid.Column(string, string, System.Func<dynamic,object>, string, bool)' has some invalid arguments
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释为什么这不起作用?"编辑"和item.AccountNumber.ToString()(除了拼写)有什么区别?
我应该注意到链接在使用"编辑" - 文本时起作用,这AccountNumber很长.
Der*_*tie 28
这是我如何用日期做的一个例子.
grid.Column(columnName: "Date", format: (item) => Html.ActionLink(((string)item.Date), "Edit", new { id = item.id })),
Run Code Online (Sandbox Code Playgroud)
你必须小心使用扩展方法(Html.*)和动态(项目)...它在csharp中不能很好地工作.当您执行新的{}投影或调用ToString时,它不再是动态的.或者,您可以强制转换:( object)item.Id.
从这里开始.
小智 5
万一有人想知道它应该在VB中看起来这是一个例子:
grid.Column("PersonID", "Admin", Function(modelItem) Html.ActionLink("View", "Details", New With {.id = modelItem.PersonID}))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40943 次 |
| 最近记录: |