何时在控制器(或后端)中创建HTML代码是否合适

时间:2012-09-07 06:12:24

标签: c# asp.net-mvc razor separation-of-concerns

我正在做一些涉及递归加载的复杂逻辑来创建一个(复杂的)HTML片段。

我开始使用Razor中的函数在View中执行此操作,因为我觉得它属于那里的HTML。

但随着它变得越来越复杂,我想我宁愿在后端代码中这样做。现在是哪个。

虽然它仍然感觉有点嗅觉,我想知道我是否应该再将它移到View中(这显然使视图混乱)

哪种技术上更正确?何时使用后端代码生成HTML?

感谢您的意见。

2 个答案:

答案 0 :(得分:1)

创建更精细的局部视图和部分模型来维护MVC模式。

当您为视图正确选择模型时,即使是部分模型,在视图中生成HTML也不是问题。你最终可能会得到20个视图和5个模型,但控制器只会选择视图并填充好的模型。

答案 1 :(得分:0)

不要在控制器中执行此操作。你可以扩展HtmlHelper类并在那里做一些事情。例如,如果您使用的是分页助手。

创建一个静态类HtmlHelpers

namespace YourMvcApplication.WebUI.HtmlHelpers
{
    public static class PagingHelpers
    {
        public static MvcHtmlString PageLinks(this HtmlHelper html,int totalPages)
        {
            StringBuilder result = new StringBuilder();
            // do the complex logic to create dynamic html and append to 
            // String Builder
            return MvcHtmlString.Create(result.ToString());
        }
    }
}

在web.config中的所有视图中添加对此类的引用。

<namespaces>
    <add namespace="YourMvcApplication.WebUI.HtmlHelpers"/>
</namespaces>

在需要的地方使用并重新使用此Html Helper方法。

<div>
    @Html.PageLinks(Model.TotalPages)
</div>