1

我正在做一些复杂的逻辑,涉及到大量的递归来创建一个(复杂的)HTML。

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

但随着它开始变得越来越复杂,我想我宁愿在后端代码中完成它。它目前是。

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

哪个技术更正确?什么时候适合使用后端代码生成 HTML?

感谢您的输入。

4

2 回答 2

1

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

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

于 2012-09-07T06:17:29.280 回答
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>
于 2012-09-07T06:24:14.067 回答