asp.net MVC 5 Html帮助程序中的TextArea出现问题



我正在尝试在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。

有人知道这个问题吗?我想我可以用partial view来解决它,但这对html助手来说应该不是问题。

App_Code文件夹中使用@helper时会有某些限制,例如无法直接访问标准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")
}

之后,您可以将视图页面中的helper方法调用为@MyHelp.GetMyTextArea(),而无需手动传递HtmlHelper

类似问题:

Razor:声明HTML助手

在App_Code 中的共享@helper中使用@Html

最新更新