Asp.net mvc 带有actionlink的ASP.NET MVC Webgrid列,使用lambda表达式获取actionlink标题的字符串?
基本上我有一个webgrid列,我想用actionlinks填充它。actionlink的标题需要是动态的,并从lambda表达式中获取。我所拥有的是:Asp.net mvc 带有actionlink的ASP.NET MVC Webgrid列,使用lambda表达式获取actionlink标题的字符串?,asp.net-mvc,linq,razor,webgrid,Asp.net Mvc,Linq,Razor,Webgrid,基本上我有一个webgrid列,我想用actionlinks填充它。actionlink的标题需要是动态的,并从lambda表达式中获取。我所拥有的是: grid.Column("Title", format: @<text>@Html.ActionLink("LAMDA", "Post", new { id = item.PostId }) </text>), grid.Column(“Title”,格式:@@Html.ActionLink(“
grid.Column("Title", format: @<text>@Html.ActionLink("LAMDA", "Post", new { id = item.PostId }) </text>),
grid.Column(“Title”,格式:@@Html.ActionLink(“LAMDA”,“Post”,new{id=item.PostId})),
但我想做的是这样的:
grid.Column("Title", format: @<text>@Html.ActionLink((item) => (item).Title.ToString(), "Post", new { id = item.PostId }) </text>),
grid.Column(“Title”,格式:@@Html.ActionLink((item)=>(item.Title.ToString(),“Post”,新的{id=item.PostId})),
但这给了我一个错误:
编译器错误消息:CS1660:无法将lambda表达式转换为类型“string”,因为它不是委托类型您实际上没有编写Linq查询-您刚刚传入了lambda函数。你需要做一个完整的查询。还请记住,查询可能会返回IQueryable或IEnumerable,因此您可能需要对其调用.Single或.First或类似函数,以获取单个字符串。找到了它。。由于某些原因,您不能使用ToString(),我必须像(string)一样强制转换。。。诡异的 解决方案:
grid.Column(columnName: "Title", format: (item) => Html.ActionLink(((string)item.Title), "Post", new { id = item.PostId })),
该查询应该在控制器中完成,并作为视图的模型返回,或者添加到ViewBagchanged问题中以反映lamda函数,而不是linq查询。找到了下面的答案,非常奇怪。。。但是谢谢你!