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”关键字,将该方法指定为扩展方法。如果你想搜索更多信息,这里有大量的教程。