我想了解为什么以下代码在第二项工作时不起作用:
@Html.Test<ContestListItemViewModel>() //Does not work
@{
var x = Html.Test<ContestListItemViewModel>();//Work
@Html.Raw(x);//Work
}
此Test助手的代码非常简单:
public static MvcHtmlString Test<TEntityType>(this HtmlHelper htmlHelper)
{
return new MvcHtmlString("<p>Test</P>");
}
错误发生在执行期间:
类型&#39; System.Web.HttpCompileException&#39;的例外情况发生在 System.Web.dll但未在用户代码中处理 编译器错误消息:CS1502:最佳重载方法匹配 &#39; System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)&#39; 有一些无效的论点
答案 0 :(得分:1)
Razor解析器很困惑。它不知道是HTML还是C#。
尝试:
@(Html.Test<ContestListItemViewModel>())
在第二个例子中,语句包含在Razor代码块中,因此它确实知道。
用括号括起来通常可以解决像这样的代码混淆问题。