![](/img/trans.png)
[英]ASPNET MVC 5 Html helper Action method view results input id missing (sometimes..) Possible Bug?
[英]Html helper method not outputting results in mvc view page
我的助手看起来像:
public static string OutputBlah( this HtmlHelper helper )
{
return htmlWriter.InnerWriter.ToString();
}
然后在我的页面中:
<%= MyHelpers.OutputBlah() %>
这应该工作还是我错过了什么? 错误表示没有接受0个争论的重载。
我应该在视图中传递给我的方法什么?
您试图通过使用静态方法调用来调用扩展方法。 您可以将代码更改为
<%= MyHelpers.OutputBlah(Html) %>
但是您可能应该更改它以使其像适当的扩展方法一样使用:
<%= Html.OputputBlah() %>
为此,您需要在页面顶部<%@ Import Namespace =“ YourHelperNameSpace”%>。 或将其添加到web.config节点。
类声明是什么样的? 确保您也使类本身成为static
:
public static class MyHelpers
{
public static string OutputBlah(this HtmlHelper helper)
{
return helper.InnerWriter.ToString();
}
}
然后在View
使用HtmlHelper
类型的常规Html
属性:
<%= Html.OutputBlah() %>
OP后续问题的答案:
声明这样的方法( static
static class
static
方法,并且第一个参数带有this
关键字)时,您将定义一个Extension Method -C#3.0中引入的功能。 基本思想是定义一个挂接到另一个类的方法,从而对其进行扩展 。
在这种情况下,您要扩展HtmlHelper
类(因为this
参数的类型),从而使.OutputBlah()
在HtmlHelper
任何实例上都可用。 如果检查ViewPage
的Html
属性,您会注意到它实际上是HtmlHelper
类型。
因此,当您在视图中使用Html.OutputBlah()
时,实际上是在访问视图页面的Html
属性中包含的HtmlHelper
实例,并在其上调用自己的扩展方法。
我认为您需要刷新HTML编写器。 我几乎可以确定是这样。
编辑:请忽略-我未读原始问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.