2010-03-12 26 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