如果你以前編寫的HtmlHelper喜歡傳回string而非MvcHtmlString,那麼在使用Razor後要改改了。
假設原來有一個Helper調用:
<%= Html.ProgressBar(tree, progress) %>
而函數聲明是:
public static string ProgressBar(this HtmlHelper htmlHelper, SFCProgressTree progressTree, SFCProgress progress, bool show = false)
{
...
return ImgTag.ToString()
}
則在新的Razor中除了在調用處改為:
@Html.ProgressBar(tree, progress)
外,還需要調整
public static MvcHtmlString ProgressBar(this HtmlHelper htmlHelper, SFCProgressTree progressTree, SFCProgress progress, bool show = false)
return new MvcHtmlString(imgTag.ToString());
原因是Razor中将所有輸出的string都進行了Html編碼。
其實Html.ActionLink等輸出的都是MvcHtmlString,不過傳回string 的Helper在aspx中也可以用。
但Razor中隻能使用MvcHtmlString。
本文轉自火星人陳勇 51CTO部落格,原文連結:http://blog.51cto.com/cheny/1102222