在WebGrid.column中使用HTML.ActionLink中的数据是不可能的?
我的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") ) )
这里有趣的部分是我在第一列中添加的编辑链接。 我想使用客户帐号而不是简单的“编辑”测试。 但是,这给我带来了很多问题。
我试过了:
grid.Column(format: (item) => Html.ActionLink(item.AccountNumber.ToString(), "Details", new { id = item.id })),
但是,似乎有些东西我不明白这是如何工作的,因为我一直得到这个例外:
CS1502: The best overloaded method match for 'System.Web.Helpers.WebGrid.Column(string, string, System.Func, string, bool)' has some invalid arguments
任何人都可以向我解释为什么这不起作用? “Edit”和item.AccountNumber.ToString()
之间有什么区别(除了拼写)?
我应该注意到链接在使用“编辑” – 文本时起作用,并且AccountNumber
很长。
这是我如何用日期做的一个例子。
grid.Column(columnName: "Date", format: (item) => Html.ActionLink(((string)item.Date), "Edit", new { id = item.id })),
你必须小心使用扩展方法(Html。*)和动态(项目)…它在csharp中不能很好地工作。 当您执行新的{}投影或调用ToString时,它不再是动态的。 或者,您可以强制转换:(object)item.Id。
从这里开始 。
以防任何人想知道它应该如何在VB中看这里是一个例子:
grid.Column("PersonID", "Admin", Function(modelItem) Html.ActionLink("View", "Details", New With {.id = modelItem.PersonID}))
就我而言,Derek Beattie解决方案无效。
我用这个
grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.ID }), style: "column-action")
我的专栏是在模型中生成的,其中Html.ActionLink似乎无法访问。 所以我必须创建href并将其作为MvcHtmlString返回。 这就是我最终做的,
new WebGridColumn{ColumnName="FileName", Header= "File", Format = item => new MvcHtmlString("" + item.FileName +"")
我已经解决了这个问题
grid.Column("Id", format: (item) => Html.ActionLink((string)item.id.ToString(), "Edit", new { id = item.id }))
我使用以下代码表示网格。 它为我工作。
@grid.GetHtml( columns: grid.Columns( grid.Column(header: "Serial No", format:@@(item.WebGrid.Rows.IndexOf(item) + 1) ), grid.Column(columnName: "Stdname", header: "Student Name"), grid.Column(header: "Email ID", format:@@item.Email ), grid.Column(header: "EDIT",format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.ID })), grid.Column(header: "DETAILS", format: (item) => Html.ActionLink("Details", "Details", new { id = item.ID })), grid.Column(header: "DELETE", format: (item) => Html.ActionLink("Delete", "Delete", new { id = item.ID })) ))
希望这有用。
@Html.Grid(Model).Columns(columns => { columns.Add(c => c.ConsumerNo).Titled("Consumer No").SetWidth(70).Filterable(true); columns.Add(c => c.ConsumerName).Titled("Consumer Name").SetWidth(200).Filterable(true); columns.Add(c => c.MobileNo).Titled("Mobile No").SetWidth(70).Filterable(true); columns.Add(c => c.Address).Titled("Address").SetWidth(200).Filterable(true); columns.Add(c => c.AreaName).Titled("Area Name").SetWidth(70).Filterable(true); columns.Add(c => c.StaffName).Titled("Staff Name").SetWidth(100).Filterable(true); columns.Add().Encoded(false).Sanitized(false).Titled("INSPECT").SetWidth(60).RenderValueAs(o => Html.ActionLink("INSPECT", "InspForm", new { id = o.UniqueConsumerId, style = "background-image:url('~/Images/orderedList1.png')" })); }).WithPaging(10).Sortable(true)
grid.Column("GiftID",canSort:false, format: (item => Html.ActionLink((string)(@item.GiftID).ToString(), "Edit", new { GiftID = @item.GiftID })))
- ASP.NET MVC 3自定义操作filter – 如何将传入模型添加到TempData?
- ‘System.Web.Mvc.HtmlHelper’没有名为’Partial’的适用方法
- 使用数据注释强制模型的布尔值为true
- ASP.NET MVC 3 Generic DisplayTemplates
- 在文件上传时使用CSVHelper
- 将JSON发布到MVC控制器 – String参数为null
- 无法访问App_Code中的Razor @helper
- 在.NET 4.0中,WebGrid + Paging + Sorting + Filtering中的filter丢失了
- 您会为.net项目推荐哪种validation框架?