我正在做一些涉及递归加载的复杂逻辑来创建一个(复杂的)HTML片段。
我开始使用Razor中的函数在View中执行此操作,因为我觉得它属于那里的HTML。
但随着它变得越来越复杂,我想我宁愿在后端代码中这样做。现在是哪个。
虽然它仍然感觉有点嗅觉,我想知道我是否应该再将它移到View中(这显然使视图混乱)
哪种技术上更正确?何时使用后端代码生成HTML?
感谢您的意见。
答案 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>