2011-01-12 40 views
0

我教自己的ASP.NET MVC,和我试图找出最好的地方放一个函数,该函数在Models.Address实例,并返回一个IHtmlString例如其内容是这样的:将自定义对象格式化程序放在ASP.NET MVC应用程序中的位置?

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

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

有没有合适的地方放置这种 - 某种共享视图? (这是否属于主人?)或者,我是否全部错了?

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

回答

2

由于这是演示UI逻辑,所以最好放置在HtmlHelper类中。

public static class HtmlHelper 
{ 

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

     return HtmlString.Create(formattedAddress); 
    } 
} 

然后,从任何观点,你只需拨打:

<%= Html.FormatAddress(地址)%>

+0

你会把什么命名空间和文件夹,在这个类? – ehdv 2011-01-12 22:21:20

2

我通常在HelperExtensions类上创建类似于Extension Method的类似内容,然后将该类放置在站点顶层的Helpers文件夹中。

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