创建Html Helper方法 - MVC框架

时间:2010-03-12 12:09:25

标签: asp.net-mvc html-helper

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

说实例

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文件夹中吗?

4 个答案:

答案 0 :(得分:2)

我会创建一个子文件夹Extensions,其中定义了辅助方法:

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") %>

答案 1 :(得分:1)

您可以将它放在任何您喜欢的地方。重要的是它对你(以及从事该项目的每个人)都有意义。就个人而言,我让我的助手走在这条道路上:/App/Extensions/

答案 2 :(得分:0)

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

答案 3 :(得分: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>

配置文件中的元素,就像你定义命名空间一样,它在任何地方都被引用。