我的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<dynamic,object>, string, bool)' has some invalid arguments
任何人都可以向我解释为什么这不起作用? “编辑”和item.AccountNumber.ToString()
之间有什么区别(拼写除外)?
我应该注意,使用“编辑”文本时链接有效,AccountNumber
很长。
答案 0 :(得分:28)
以下是我如何使用日期进行操作的示例。
grid.Column(columnName: "Date", format: (item) => Html.ActionLink(((string)item.Date), "Edit", new { id = item.id })),
您必须小心使用扩展程序 带动力学的方法(Html。*) (项目)......它不能很好地工作 CSHARP。当你做新的{} 投影或调用ToString,它不是 更长的动态。或者,你 可以施放:(对象)item.Id。
来自here。
答案 1 :(得分:5)
以防任何人想知道它应该如何看待VB这里是一个例子:
grid.Column("PersonID", "Admin", Function(modelItem) Html.ActionLink("View", "Details", New With {.id = modelItem.PersonID}))
答案 2 :(得分:2)
就我而言,Derek Beattie解决方案无效。
我用这个
grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.ID }), style: "column-action")
答案 3 :(得分:1)
我的列是在模型中生成的,其中Html.ActionLink似乎无法访问。所以我必须创建href并将其作为MvcHtmlString返回。这就是我最终做的事情,
new WebGridColumn{ColumnName="FileName", Header= "File",
Format = item => new MvcHtmlString("<a href='" + item.FileLink + "'>" + item.FileName +"</a>")
答案 4 :(得分:0)
我已经解决了这个问题
grid.Column("Id", format: (item) => Html.ActionLink((string)item.id.ToString(), "Edit", new { id = item.id }))
答案 5 :(得分:0)
我使用以下代码表示网格。它为我工作。
@grid.GetHtml(
columns: grid.Columns(
grid.Column(header: "Serial No", format:@<text><div>@(item.WebGrid.Rows.IndexOf(item) + 1)</div></text>),
grid.Column(columnName: "Stdname", header: "Student Name"),
grid.Column(header: "Email ID", format:@<text><a href="mailto:@item.Email">@item.Email</a></text>),
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 }))
))
希望这有用。
答案 6 :(得分:0)
@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)
答案 7 :(得分:-1)
grid.Column("GiftID",canSort:false, format: (item => Html.ActionLink((string)(@item.GiftID).ToString(), "Edit", new { GiftID = @item.GiftID })))