C# 这是MVC3中的扩展方法还是辅助方法?
我不知道哪个是哪个。有人能解释一下两者的区别吗 例如,下面返回MvcHtmlString的是扩展还是助手方法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
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”。