MVC 5 ASP.Net Razor无法将lambda表达式转换为类型';MvcHtmlString';因
本文关键字:转换 类型 表达式 MvcHtmlString lambda Net ASP Razor MVC | 更新日期: 2023-09-27 18:00:09
我在HtmlHelper中的Lambda表达式中插入一些html时遇到了这个问题。当我试图将lambda表达式与一些html混合使用时。
HtmlCell<EmployeeViewModel>.Create(x=> new MvcHtmlString(@<div>@x.Email</div>), null)
我在@x.Email
上收到一条错误消息,上面写着:
-无法将lambda表达式转换为类型"MvcHtmlString",因为它不是委托类型。
-无法将lambda表达式转换为预期的委托类型,因为块中的某些返回类型无法隐式转换为委托返回类型
我的HtmlHelper的原型是:
public ICell<TModel> Create(Expression<Func<TModel, string>> html, object htmlAttributes = null)
我以前读过这篇文章:https://stackoverflow.com/a/18291265/3114267(但答案是从2014年开始的,所以可能是它进化而来的)
你知道怎么了吗?如何修复它,如何将lambda和一些"Html"混合在一起?
试试这个
HtmlCell<EmployeeViewModel>.Create(x=>
new MvcHtmlString(String.Format("<div>{0}</div>", x.Email)), null)
更新
如果你想避免字符串。格式或html更复杂,然后使用@helper:
HtmlCell<EmployeeViewModel>.Create(x=> func(x).ToHtmlString()), null)
视图下方
@helper func(EmployeeViewModel employeeViewModel )
{
<div>@employeeViewModel.Email</div>
}