2010-03-12 90 views
2

我正在从MSDN网站上的Stephen Walther教程学习MVC。他建议我们可以创建Html Helper方法。创建Html帮助器方法 - MVC框架

说实例

using System; 
namespace MvcApplication1.Helpers 
{ 
      public class LabelHelper 
      { 
       public static string Label(string target, string text) 
       { 
        return String.Format("<label for='{0}'>{1}</label>", 
        target, text); 
       } 
      } 
} 

我的问题在哪个文件夹我是否需要创建这些类?

查看文件夹或控制器文件夹?或者我可以将它放在App_Code文件夹中?

回答

2

我会创造一个定义的helper方法的子目录下,扩展:

namespace SomeNamespace 
{ 
    public static class HtmlHelperExtensions 
    { 
     public static string MyLabel(this HtmlHelper htmlHelper, string target, string text) 
     { 
      var builder = new TagBuilder("label"); 
      builder.Attributes.Add("for", target); 
      builder.SetInnerText(text); 
      return builder.ToString(); 
     } 
    } 
} 

在你看来,你需要引用命名空间,并使用扩展方法:

<%@ Import Namespace="SomeNamespace" %> 

<%= Html.MyLabel("abc", "some text") %> 
+0

不应该返回一个IHtmlString吗? – ganders 2016-04-06 14:00:57

0

将它放在应用程序代码中。但是,ASP.NET MVC 2已具有Label的功能。

1

你可以把它放在任何你喜欢的地方。重要的是它对你(以及在项目中工作的每个人)都有意义。就我个人而言,我将我的助手留在这条路上:/App/Extensions/

0

你可以放在Models文件夹或App_Code中(不确定MVC支持哪种类型的支持);最好是在单独的图书馆中。此外,HTML辅助扩展是必须像这样的HtmlHelper HTML参数开始扩展方法:

public static class LabelHelper 
     { 
       public static string Label(this HtmlHelper html, string target, string text) 
       { 
        return String.Format("<label for='{0}'>{1}</label>", 
        target, text); 
       } 
      } 

编辑:您可以将它添加到命名空间内引用此:

<pages> 
    <namespaces> 

配置文件中的元素也是如此,这样您可以定义一次名称空间,并且它在每个地方都被引用。

+0

正确的。如果它不是以这个HtmlHelper html开头,那么它不是扩展名,你必须将它称为LabelHelper.Label而不是Html.Label – 2010-03-12 13:05:16