2016-08-03 41 views
0

我在將某些html插入HtmlHelper中的Lambda表達式時出現此問題。 當我試圖混合lambda表達式與一些HTML。MVC 5 ASP.Net Razor無法將lambda表達式轉換爲鍵入'MvcHtmlString',因爲它不是委託類型

HtmlCell<EmployeeViewModel>.Create(x=> new MvcHtmlString(@<div>@x.Email</div>), null) 我上@x.Email一個錯誤消息說:

-Cannot轉換lambda表達式鍵入「MvcHtmlString」,因爲它不是一個委託類型。

-Cannot lambda表達式轉換爲預期的委託類型,因爲一些塊的返回類型不隱式轉換爲委託返回類型

我的HtmlHelper的原型是:

public ICell<TModel> Create(Expression<Func<TModel, string>> html, object htmlAttributes = null)

我過去看過這篇文章:https://stackoverflow.com/a/18291265/3114267(但是答案是從2014年開始,所以也許它會進化)

你知道什麼是錯的嗎?我該如何解決這個問題,以及如何混合一個lambda和一些「Html」?

回答

1

試試這個

HtmlCell<EmployeeViewModel>.Create(x=> 
    new MvcHtmlString(String.Format("<div>{0}</div>", x.Email)), null) 

更新

,如果你想避免的String.Format或HTML更復雜然後使用@helper:

HtmlCell<EmployeeViewModel>.Create(x=> func(x).ToHtmlString()), null) 
下面

鑑於

@helper func(EmployeeViewModel employeeViewModel) 
{ 
    <div>@employeeViewModel.Email</div> 
} 
+0

它正在那樣工作,但我想要以避免字符串格式。感謝您的幫助。 – Lenny32

+0

看到更新,以避免String.Format –

+0

非常感謝你,我設法使它工作。 – Lenny32

相關問題