我正在尝试在 Asp.net MVC 5 中做一个非常简单的 Html 助手:
@helper GetMyTextArea()
{
@Html.TextArea("myText")
}
然后我尝试将它包含在我的视图中:(助手MyHelp.cshtml
位于名为 的文件中,位于App_Code
文件夹中)
@MyHelp.GetMyTextArea()
如果我现在呈现我的视图,我会收到以下异常:
System.NullReferenceException:System.Web.WebPages.HelperPage.Html.get 返回 null。
有人知道这个问题吗?我想我可以用 a 解决它,partial view
但这应该不是 html helper 的问题。
@helper
在App_Code
文件夹中使用时存在某些限制,例如不能直接访问标准HtmlHelper
方法(您需要通过将其包含在您的方法中来手动传递它,例如@helper GetMyTextArea(HtmlHelper Html)
)。您可以添加@functions
允许直接访问HtmlHelper
方法的选项:
@functions {
public static WebViewPage page = (PageContext.Page as WebViewPage);
public static HtmlHelper<object> html = page.Html;
}
因此,MyHelp.cshtml
内容应该是这样的:
// adapted from /a/35269446/
@functions {
public static WebViewPage page = (PageContext.Page as WebViewPage);
public static HtmlHelper<object> html = page.Html;
}
@helper GetMyTextArea()
{
@Html.TextArea("myText")
}
之后,您可以在视图页面中调用辅助方法,@MyHelp.GetMyTextArea()
而无需HtmlHelper
手动传递。
类似问题:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句