Asp.net mvc 3 Razor未正确呈现HtmlHelper扩展方法
我的html助手类中有一个扩展方法来呈现自动完成。这与VS2008和VS2010中的aspx视图引擎配合得很好。Autocomplete类有一个重载的ToString()方法,该方法输出原始Html 然而,当我使用剃须刀引擎时,我并没有得到任何可见的输出。Firebug显示扩展方法的输出是Html编码的,如下所示:(使用all<,>..) 这就是我调用方法的方式:Asp.net mvc 3 Razor未正确呈现HtmlHelper扩展方法,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我的html助手类中有一个扩展方法来呈现自动完成。这与VS2008和VS2010中的aspx视图引擎配合得很好。Autocomplete类有一个重载的ToString()方法,该方法输出原始Html 然而,当我使用剃须刀引擎时,我并没有得到任何可见的输出。Firebug显示扩展方法的输出是Html编码的,如下所示:(使用all<,>..) 这就是我调用方法的方式: @Html.AutocompleteFor(m => m.p_empid, m => m.p_ename) .s
@Html.AutocompleteFor(m => m.p_empid, m => m.p_ename)
.setUrl(VirtualPathUtility.ToAbsolute("~/UserMst/GetEmployee"))
.setClass("AutoComplete").setStyle("width: 190px")
如何在MVC3中使用Razor解决此问题
谢谢请确保使用以下命令返回
MvcHtmlString
:
public static MvcHtmlString HiText(this HtmlHelper obj) {
string code = "<p>hi</p>";
return MvcHtmlString.Create(code);
}
公共静态MvcHtmlString HiText(此HtmlHelper obj){
字符串代码=“hi”;
返回MvcHtmlString.Create(代码);
}
好的!这就是我现在如何让它工作的。不知道这是不是一个好的解决方案。为面临相同问题的其他人在此处发布修复程序
我将ToString()
override方法重命名为MvcHtmlString ToHtml()
,并返回MvcHtmlString.Create(result.ToString())
,而不是原始html作为字符串
现在我不得不称之为
@Html.AutocompleteFor(m => m.p_empid, m => m.p_ename)
.setUrl(VirtualPathUtility.ToAbsolute("~/UserMst/GetEmployee"))
.setClass("AutoComplete").setStyle("width: 190px").ToHtml()
Razor现在可以正确地渲染它。调用
ToMvcHtmlString()
(IIRC)@leppie-ToMvcHtmlString()
是框架的内部-您需要调用MvcHtmlString.Create()
或编写自己的扩展方法
@Html.AutocompleteFor(m => m.p_empid, m => m.p_ename)
.setUrl(VirtualPathUtility.ToAbsolute("~/UserMst/GetEmployee"))
.setClass("AutoComplete").setStyle("width: 190px").ToHtml()