gpt4 book ai didi

c# - ASP.NET MVC3 WebGrid 格式 : parameter

转载 作者:可可西里 更新时间:2023-11-01 08:21:35 25 4
gpt4 key购买 nike

我正在尝试在 ASP.NET MVC3 中使用新的 WebGrid 以及我想显示一组执行各种操作(编辑、查看、删除)的链接图标的列之一...为此,我有一个基本上输出以下 HTML 的 HtmlHelper 扩展:

<a href="" title=""><img alt="" src="" /></a>

扩展返回 MvcHtmlString 并且在 Razor View 中单独使用时它工作正常..例如:@Html.ActionLinkIconForEditAction("客户", 2)

问题是我需要在传递对象的 ID 时在 WebGrid 列中调用此帮助程序(每个操作一次)。我遇到的问题是编译器给我一个错误,说它不能将 MvcHtmlString(或“lambda 表达式”,取决于我尝试的调用)转换为格式预期的 System.Func...

例如,这有效:

grid.Column(header: "", format: @<text>@Html.ActionLinkIconForEditAction("Customer", 2)</text>)

但这不是:

grid.Column(header: "", format: (customer) => @<text>@Html.ActionLinkIconForEditAction("Customer", customer.Id)</text>)
grid.Column(header: "", format: (customer) => Html.ActionLinkIconForEditAction("Customer", customer.Id))

我得到:

Error 4 Argument 3: cannot convert from 'lambda expression' to 'System.Func<dynamic,object>'

或者对于这个调用:

grid.Column(header: "", format: Html.ActionLinkIconForEditAction("Customer", customer.Id)),

我得到:

Error 5 Argument 3: cannot convert from 'System.Web.Mvc.MvcHtmlString' to 'System.Func<dynamic,object>'

奇怪的是,我还有其他列使用 lambda、直接 Model.Property 访问器,甚至来自 String.Format("") 的输出...它们都工作正常...我阅读了关于 Func 和 this thread as well 的所有文档, 还是不太明白 :)

谁能发现我做错了什么?

最佳答案

我明白了:) ....问题似乎出在 C# 处理动态对象的方式上......很多用户都对此感到兴奋......

修复非常简单,只需将参数的正确类型转换为我的扩展助手...所以这有效:

grid.Column(header: "", format: @<text>@Html.ActionLinkIconForEditAction("Customer", (int)item.Id)

另一个技巧是在“item”对象中使用“built”而不是提供你自己的..所以,例如,这是行不通的:

grid.Column(header: "", format: (customer) =>  @<text>@Html.ActionLinkIconForEditAction("Customer", (int)customer.Id)

大量阅读、调整、学习...希望当您需要向不是直接来自模型的列添加内容时,下一个版本会更容易使用...

问候Z...

关于c# - ASP.NET MVC3 WebGrid 格式 : parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5122691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com