我的html helper类中有一个Extension方法来呈现自动完成功能。 这在VS2008和VS2010中的aspx视图引擎中可以很好地工作。 Autocomplete类具有一个重载的ToString()方法,该方法输出Raw Html。
但是,当我使用Razor引擎时,没有任何可见的输出。 Firebug显示扩展方法的输出为Html编码,如下所示:(所有&lt,&gt ..)
这就是我所说的方法:
@Html.AutocompleteFor(m => m.p_empid, m => m.p_ename)
.setUrl(VirtualPathUtility.ToAbsolute("~/UserMst/GetEmployee"))
.setClass("AutoComplete").setStyle("width: 190px")
我如何解决此问题以使其与MVC3中的Razor一起使用?
谢谢
呼叫ToMvcHtmlString()(IIRC)
@leppie-ToMvcHtmlString()在框架内部-您需要调用MvcHtmlString.Create()或编写自己的扩展方法
确保使用以下命令返回MvcHtmlString:
public static MvcHtmlString HiText(this HtmlHelper obj) {
string code ="
hi
";return MvcHtmlString.Create(code);
}
好 ! 这就是我现在如何使其工作的方式。 不知道这是否是一个好的解决方案。 在此处将修复程序发布给其他面临相同问题的人。
我将ToString()覆盖方法重命名为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()
剃刀现在正确渲染它。