在ASP.NET MVC应用程序中放置自定义对象格式化程序的位置?

时间:2011-01-12 20:16:19

标签: asp.net asp.net-mvc

我正在自学ASP.NET MVC,并试图找出最好放置一个函数的地方,该函数接收Models.Address实例并返回一个IHtmlString实例,其内容如下: / p>

Line 1<br />
Line 2<br />
City, State

该字符串可以在我的整个项目中的许多地方使用,所以我不想在一个视图中编写它并且必须保持复制粘贴它或附加该视图:通过相同的逻辑将它附加到ViewData看起来像一个坏主意。但是,HtmlEncode方法需要一个服务器实例,这意味着我无法将该函数添加到模型类中。

有没有合适的位置 - 某种共享视图? (这属于主人吗?)或者我是不是错了?

我目前最好的想法是使用方法public IHtmlString FormatAddress(Address address, HttpServerUtility server)创建一个ViewModel,但我不知道这是否是ASP.NET MVC的方法。

2 个答案:

答案 0 :(得分:2)

我通常会在HelperExtensions类上创建类似的扩展方法,然后将该类放在网站顶层的Helpers文件夹中。

public static class HelperExtensions
{
    public static Format(this Address address, HttpServerUtility server)
    {
        // Do the work to format here.
    }
}

答案 1 :(得分:2)

由于这是演示UI逻辑,因此放置它的最佳位置是HtmlHelper类。

public static class HtmlHelper
{

   public static HtmlString FormatAddress (this HtmlHelper, Address address)
   {
       string formattedAddress = // the formatted address...

       return HtmlString.Create(formattedAddress);
   }
}

然后,从任何视图中,您只需致电:

  

&lt;%= Html.FormatAddress(地址)%&gt;