C# Html助手方法未在mvc视图页面中输出结果

C# Html助手方法未在mvc视图页面中输出结果,c#,asp.net-mvc,C#,Asp.net Mvc,我的助手看起来像: public static string OutputBlah( this HtmlHelper helper ) { return htmlWriter.InnerWriter.ToString(); } 然后在我的查看页面中: <%= MyHelpers.OutputBlah() %> 这是有效的还是我遗漏了什么? 错误表示没有接受0个参数的重载 我应该在viewpage中向我的方法传递什么?您正试图使用静态方法调用来调用扩展方法。您可以将代码更改

我的助手看起来像:

public static string OutputBlah( this HtmlHelper helper )
{

 return htmlWriter.InnerWriter.ToString();
}
然后在我的查看页面中:

<%= MyHelpers.OutputBlah() %>

这是有效的还是我遗漏了什么? 错误表示没有接受0个参数的重载


我应该在viewpage中向我的方法传递什么?

您正试图使用静态方法调用来调用扩展方法。您可以将代码更改为

<%= MyHelpers.OutputBlah(Html) %>

但您可能应该将其更改为将其用作适当的扩展方法:

<%= Html.OputputBlah() %>


为了做到这一点,你需要在页面的顶部。或者将其添加到web.config节点。

您正在尝试使用静态方法调用扩展方法。您可以将代码更改为

<%= MyHelpers.OutputBlah(Html) %>

但您可能应该将其更改为将其用作适当的扩展方法:

<%= Html.OputputBlah() %>


为了做到这一点,你需要在页面的顶部。或者将其添加到web.config节点。

类声明是什么样子的?确保类本身
也是静态的

public static class MyHelpers
{
    public static string OutputBlah(this HtmlHelper helper)
    {
        return helper.InnerWriter.ToString();
    }
}
然后在
视图中使用
HtmlHelper
类型的常规
Html
属性:

<%= Html.OutputBlah() %>


对OP后续问题的回答:

当声明这样的方法时(
static
中的
static
方法,并使用带有
this
关键字的第一个参数),您可以定义一个-a特性,该特性是在C#3.0中引入的。其基本思想是定义一个连接到另一个类的方法,从而扩展它

在本例中,您正在扩展
HtmlHelper
类(因为这是
this
参数的类型),从而使
.OutputBlah()
可用于
HtmlHelper
的任何实例。如果检查的属性,您会注意到它实际上是类型
HtmlHelper


因此,当您在视图中使用
Html.OutputBlah()
时,实际上是在访问viewpage的
Html
属性中包含的
HtmlHelper
实例,并对其调用您自己的扩展方法。

类声明是什么样子的?确保类本身
也是静态的

public static class MyHelpers
{
    public static string OutputBlah(this HtmlHelper helper)
    {
        return helper.InnerWriter.ToString();
    }
}
然后在
视图中使用
HtmlHelper
类型的常规
Html
属性:

<%= Html.OutputBlah() %>


对OP后续问题的回答:

当声明这样的方法时(
static
中的
static
方法,并使用带有
this
关键字的第一个参数),您可以定义一个-a特性,该特性是在C#3.0中引入的。其基本思想是定义一个连接到另一个类的方法,从而扩展它

在本例中,您正在扩展
HtmlHelper
类(因为这是
this
参数的类型),从而使
.OutputBlah()
可用于
HtmlHelper
的任何实例。如果检查的属性,您会注意到它实际上是类型
HtmlHelper


因此,当您在视图中使用
Html.OutputBlah()
时,实际上您正在访问viewpage的
Html
属性中包含的
HtmlHelper
实例,并对其调用您自己的扩展方法。

我认为您需要刷新Html编写器。我几乎可以肯定就是这样


编辑:请忽略-我看错了原始问题。

我认为您需要刷新HTML编写器。我几乎可以肯定就是这样


编辑:请忽略-我看错了原来的问题。

当它是MyHelpers类时,它在“Html”下如何可用?因为您编写了一个C#3.0新的“扩展方法”。通过在第一个方法参数中放置“this”关键字,将该方法指定为扩展方法。如果你想搜索更多信息,有很多教程。当它是MyHelpers类时,“Html”下如何提供这些教程?因为你编写了一个C#3.0中新的“扩展方法”。通过在第一个方法参数中放置“this”关键字,将该方法指定为扩展方法。如果你想搜索更多信息,这里有大量的教程。