ASP.NET MVC3-Html.ActionLink的使用

ASP.NET MVC3-Html.ActionLink的使用,asp.net,asp.net-mvc-3,html.actionlink,Asp.net,Asp.net Mvc 3,Html.actionlink,我需要以grid.Column规范的格式:property使用Html.ActionLink。 我的代码如下: grid.GetHtml( grid.Columns( grid.Column(header: "Column 1", format: (item) => @<div class='webgrid-bookname-column-style'> @item.BookName </div>), grid.Column(header:

我需要以grid.Column规范的格式:property使用Html.ActionLink。 我的代码如下:

grid.GetHtml(

  grid.Columns( 
    grid.Column(header: "Column 1", format: (item) => @<div class='webgrid-bookname-column-style'> @item.BookName </div>),
    grid.Column(header: "Column 2", format: (item) => Html.ActionLink(item.StartTime, "ShowShippingFileMessage", new { @id = item.BookName }))
  )
)
grid.GetHtml(
网格.列(
grid.Column(标题:“第1列”,格式:(item)=>@@item.BookName),
grid.Column(标题:“Column 2”,格式:(item)=>Html.ActionLink(item.StartTime,“ShowShippingFileMessage”,new{@id=item.BookName}))
)
)
当我使用这种语法时,它会给我 与
System.Web.Helpers.WebGrid.Column(string,string,System.Func,string,bool)
匹配的最佳重载方法有一些无效参数 当我用“编辑”之类的普通文本更改上面的item.StartTime时,它工作正常

我是ASP.NET新手,有人能帮我理解上面的陈述有什么问题吗

提前感谢。

格式参数的类型为
Func

它必须返回一个
HelperResult
,而不是
IHtmlString

它是这样定义的,允许您通过。
要传递内联帮助程序,请删除
(项)=>
;内联帮助程序使用
参数隐式生成lambda表达式。
要传递正常的lambda表达式,需要使其返回a。
HelperResult
s,因此您可以编写

item => new HelperResult(w => w.Write(Html.ActionLink(...).ToHtmlString()))
EDIT:我没有意识到参数被声明为
Func
。这意味着您可以传递内联帮助器或任何其他lambda表达式。
你的第二个例子应该有用

还可以使用内联帮助器。要在没有HTML标记的情况下执行此操作,请使用特殊的
标记:

item => @<text>@Html.ActionLink(...)</text>
item=>@@Html.ActionLink(…)

Razor将从输出中删除

您传递的显示字符串类型为DateTime。尝试输入字符串

grid.Column(header: "Column 2", format: (item) => Html.ActionLink(item.StartTime.ToString(), "ShowShippingFileMessage", new { @id = item.BookName }))

谢谢你的快速回复。我尝试了两种选择,但都没用。我仍然收到相同的错误。它是相同的错误消息。未更改----CS1502:与“System.Web.Helpers.WebGrid.Column(string,string,System.Func,string,bool)”匹配的最佳重载方法有一些无效参数。我不确定是否理解您的问题。但这是我从网页上得到的-----------------\Index.cshtml(96,17):错误CS1502:System.web.Helpers.WebGrid.Column(string,string,System.Func,string,bool)的最佳重载方法匹配具有一些无效参数\Index.cshtml(98,27):错误CS1503:参数3:无法从'lambda expression'转换为'System.Func',这通常意味着您的lambda中有一些语法错误。请尝试
new{id=(string)item.BookName}