我正在做一些复杂的逻辑,涉及到大量的递归来创建一个(复杂的)HTML。
我开始在视图中使用 Razor 中的函数执行此操作,因为我觉得它属于 HTML。
但随着它开始变得越来越复杂,我想我宁愿在后端代码中完成它。它目前是。
虽然它仍然感觉有点臭,我想知道我是否应该再次将它移动到视图(这显然会使视图混乱)
哪个技术更正确?什么时候适合使用后端代码生成 HTML?
感谢您的输入。
我正在做一些复杂的逻辑,涉及到大量的递归来创建一个(复杂的)HTML。
我开始在视图中使用 Razor 中的函数执行此操作,因为我觉得它属于 HTML。
但随着它开始变得越来越复杂,我想我宁愿在后端代码中完成它。它目前是。
虽然它仍然感觉有点臭,我想知道我是否应该再次将它移动到视图(这显然会使视图混乱)
哪个技术更正确?什么时候适合使用后端代码生成 HTML?
感谢您的输入。
创建更精细的局部视图和局部模型以维护 MVC 模式。
当您为视图正确选择模型时,即使是部分模型,在视图中生成 HTML 也不是问题。您最终可能会得到 20 个视图和 5 个以上的模型,但控制器只会选择视图并填充模型,这很好。
不要在控制器中这样做。您可以扩展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>