C# 这是MVC3中的扩展方法还是辅助方法?

C# 这是MVC3中的扩展方法还是辅助方法?,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,我不知道哪个是哪个。有人能解释一下两者的区别吗 例如,下面返回MvcHtmlString的是扩展还是助手方法 public static class LinkExtensions { public static MvcHtmlString HdrLinks( this HtmlHelper helper, string topLink, string subLink, System.Security.Principal

我不知道哪个是哪个。有人能解释一下两者的区别吗

例如,下面返回MvcHtmlString的是扩展还是助手方法

public static class LinkExtensions
{
    public static MvcHtmlString HdrLinks(
        this HtmlHelper helper, 
        string topLink, 
        string subLink, 
        System.Security.Principal.IPrincipal user)
    {
    etc ...
这个怎么样:

    public static class Slug
{
    public static string Generate(string phrase, int maxLength = 50)
    {
        string str = RemoveAccent(phrase).ToLower();
        str = Regex.Replace(str, @"[^a-z0-9\s-]", " ");
        str = Regex.Replace(str, @"[\s-]+", " ").Trim();
        str = str.Substring(0, str.Length <= maxLength ? str.Length : maxLength).Trim();
        str = Regex.Replace(str, @"\s", "-");
        return str;
    }
公共静态类Slug
{
公共静态字符串生成(字符串短语,int maxLength=50)
{
string str=RemoveAccent(短语).ToLower();
str=Regex.Replace(str,@“[^a-z0-9\s-]”,“”);
str=Regex.Replace(str,@“[\s-]+”,“”)。Trim();

str=str.子串(0,str.Length它们不是helper方法,它们被称为HTML helper。C#中没有“helper方法”实现。HTML helper被实现为扩展方法。您可以看到扩展方法是静态方法,在第一个参数之前有一个this子句。HTML helper使生成HTML标记变得更容易。

它们不是helper m方法,它们被称为HTML帮助程序。在C#中没有“帮助程序方法”实现。HTML帮助程序被实现为扩展方法。您可以看到扩展方法是静态方法,在第一个参数之前有一个this子句。HTML帮助程序使生成HTML标记变得更容易

public static MvcHtmlString HdrLinks(this HtmlHelper helper, string topLink)
是ASP.NET MCV视图中使用的C#扩展方法和html帮助程序方法:

//Example of a call as an extension method:

var helper = new HtmlHelper(...);
var result = helper.HdrLinks(topLink);

//Example of a call as a helper method in an MVC razor view:
@Html.HdrLinks(topLink)
以下是一种“标准”静态C#方法:

静态方法是在没有类实例的情况下调用的。它是一种用于分组函数的特殊伪构造

是ASP.NET MCV视图中使用的C#扩展方法和html帮助程序方法:

//Example of a call as an extension method:

var helper = new HtmlHelper(...);
var result = helper.HdrLinks(topLink);

//Example of a call as a helper method in an MVC razor view:
@Html.HdrLinks(topLink)
以下是一种“标准”静态C#方法:


静态方法是在没有类实例的情况下调用的。它是一种特殊的虚拟构造,用于对函数进行分组。

因此,在典型的MVC配置中,这些方法会存储在/Helpers目录还是/ExtensionMethods中?为了清楚起见,我应该将它们放在不同的目录中吗?MVC附带的那些方法位于System.Web.MVC.Html命名空间中。您可以存储cu在您想要的任何地方使用StHelHelp。您可能需要考虑注册扩展方法代码中的命名空间(<代码>链接扩展< /代码>)。在web.config文件中,您需要在
部分中添加类似的行:
。否则,如果视图代码中没有@using或@import,您将无法使用助手扩展方法。我正在web.config文件中注册,但仍想知道MV中的目录放置约定是什么C.您可以检查并查看是否缺少某些内容。因此,在典型的MVC配置中,这些内容会存储在/Helpers目录或/ExtensionMethods中吗?为了清晰起见,我应该将它们放在不同的目录中吗?MVC附带的那些内容位于System.Web.MVC.Html命名空间中。您可以将自定义帮助程序存储在任意位置。您可能需要考虑r注册扩展方法代码所在的命名空间(
LinkExtensions
以上)在web.config文件中,您需要在
部分中添加类似的行:
。否则,如果视图代码中没有@using或@import,您将无法使用助手扩展方法。我正在web.config文件中注册,但仍想知道MV中的目录放置约定是什么C.你可以检查一下你是否遗漏了一些东西。我不知道MVC的“helper”方法,但“helper”从OO或体系结构的角度来看并没有任何意义,而且是一种不好的命名约定。尽可能避免使用它,但可以随意使用使用使用该坏名称的现有库/代码。如果MVC正在生成名为“helper”的方法,不要试图纠正它-只是不要叠加在现有的错误命名之上。例如,MS添加到
IEnumerable
类型的扩展方法称为“Linq”,而不是“Enumerableholper”。我不知道MVC的“helper”方法,而是“helper”从OO或体系结构的角度看,这并不意味着什么,而且是一种不好的命名约定。尽可能避免使用它,但可以随意使用使用该坏名称的现有库/代码。如果MVC正在生成名为“helper”的方法,不要试图纠正它-只是不要堆积在现有的错误命名之上。例如,MS添加到
IEnumerable
类型中的扩展方法称为“Linq”,而不是“Enumerableholper”。