c# - View 创建部分(子) View 是不好的做法吗?

标签 c# model-view-controller

我正在创建一个小 View 框架。我并不是想严格遵守 MVC,但我肯定会努力不妨碍 MVC 实践。

无论如何,我的问题之一是: View 创建自己的 subview 是否不好?

例如,在伪 C# 代码中:

/*BlogEntryView*/
<h1>my blog entry...</h1>
<div class="Comments">
{# //code
  foreach(var comment in Comments){
    Write(new CommentView(comment));
  }
#}
</div>

这对于 MVC 风格来说是不好的做法吗?正确的做法是在 BlogEntryView 中提供一个“占位符”,模型用 CommentView 填充它?

(另外,请不要标记asp.net-mvc,这很相似,但绝不使用ASP.Net MVC技术)

为了进行比较,与此相反,将在模型代码中添加带有某些占位符的 View :

/*BlogEntryView*/
<h1>my blog entry...</h1>
<div class="Comments">
{# SomePlaceholder #}
</div>

/*In the model code for BlogEntry*/
//v is a BlogEntryView
foreach(var comment in Comments){
  v.PlaceHolder.Add(new CommentView(comment));
}

最佳答案

ASP.NET MVC 和 Ruby on Rails 都通过使用部分 View 来促进我认为您所指的方法。

使用您的示例通常会产生一个调用部分评论记录的 View 。在 ASP.NET MVC C# 中,这将如下所示:-

<h1>my blog entry...</h1>
<div class="Comments">
  <% foreach (var comment in Model.Comments) { %>
    <% Html.RenderPartial("Comment", comment); %>
  <% } %>
</div>

遵循当前的 MVC 哲学和设计原则,这种分解为 View 代码的小“原子”部分的方式在许多圈子中都受到积极鼓励。然而,在这种分解和可维护性之间总是需要寻求平衡。

关于c# - View 创建部分(子) View 是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5175174/

相关文章:

c# - C# 中字符串字典的最佳性能

c# - "System.ServiceModel.Primitives"- 找不到程序集或找不到依赖项

ios - tableView.setContentOffset 不适用于嵌入在 UIViewcontroller 中的 UITableView

model-view-controller - 集成ASP.NET MVC和MVVM的应用程序框架

java - 每个 JSpinner 对象都有自己的 Model 对象吗?

java - 进度条 + Java 中的 MVC =?

c# - 在 Windows 10 中配置图像控件

c# - 我们可以在 C# 中在运行时动态交换程序集吗

c# - IList<T> 没有 "where"

angularjs - 添加额外的 'views:{' foo' :{}}' when declaring a view in angular? 的目的是什么