19

我的 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很长。

4

8 回答 8

28

这是我如何处理日期的示例。

grid.Column(columnName: "Date", format: (item) => Html.ActionLink(((string)item.Date), "Edit", new { id = item.id })),          

您必须注意将扩展方法(Html.*)与动态(项目)一起使用......它在 csharp 中效果不佳。当您执行新的 {} 投影或调用 ToString 时,它不再是动态的。或者,您可以强制转换:(object)item.Id。

这里

于 2011-05-29T13:32:50.073 回答
5

以防万一有人想知道它在 VB 中应该是什么样子,这里有一个例子:

grid.Column("PersonID", "Admin", Function(modelItem) Html.ActionLink("View", "Details", New With {.id = modelItem.PersonID}))
于 2012-08-17T09:12:05.857 回答
2

就我而言,Derek Beattie 解决方案不起作用。

我用这个

 grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.ID }), style: "column-action") 
于 2013-02-24T11:43:57.357 回答
1

我的列是在模型中生成的,其中 Html.ActionLink 似乎无法访问。所以我必须创建 href 并将其作为 MvcHtmlString 返回。这就是我最终做的,

new WebGridColumn{ColumnName="FileName", Header= "File",
                Format = item => new MvcHtmlString("<a href='" + item.FileLink + "'>" + item.FileName +"</a>")
于 2015-05-28T14:15:41.990 回答
0

我已经这样解决了

grid.Column("Id", format: (item) => Html.ActionLink((string)item.id.ToString(), "Edit", new { id = item.id }))

于 2013-03-05T21:45:32.983 回答
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 }))
))

希望这会有所帮助。

于 2015-09-22T07:37:37.513 回答
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)
于 2016-03-11T06:43:40.303 回答
-1
 grid.Column("GiftID",canSort:false, format: (item => Html.ActionLink((string)(@item.GiftID).ToString(), "Edit", new { GiftID = @item.GiftID })))
于 2015-09-08T09:08:09.383 回答