asp.net-mvc - 在 ASP .Net MVC Controller 中查看每个条件

标签 asp.net-mvc view

我应该为 Controller 中的每个条件创建一个相关 View 吗?例如我有以下代码

public ActionResult List(){

 List<Report> reports = getReport();
 if(report.Count > 0){
 //returning the normal view
return View();
}else{
//show the view for no reports
return View("NoReportAvailable");
}

}

或者我也可以只有一个 View (List.aspx)并在我的 View 中执行其他操作,如果报告为 0,则可能呈现部分 View “NoReportAvailablePartial”。

哪个更好,或者你们如何处理这种情况?

最佳答案

这取决于 View 包含的其他 HTML 或逻辑,但我倾向于遵循以下粗略规则:

  • 如果您发现您的 View 开始包含大量 if/else 逻辑,那么应该将其重构为单独的 View 并将逻辑置于 Controller 中。

  • 如果您的 View 除了 if 逻辑(即列表或“无可用报告”)之外不包含其他可重复的 HTML,那么我将分成 2 个 View 并将逻辑放在 Controller 中。例如。如果您使用的是包含其余 HTML 的母版页。我认为它更清楚了。

  • 如果您的页面包含大量 HTML,如果将 View 分开,这些 HTML 会重复,那么我会将 if 逻辑放在 View 中,并根据列表是否包含项目来呈现部分 View 。

我相信基本的显示逻辑(例如 if (report.Count > 0) {})在 View 中是可以的,但是您应该坚持 DRY 原则,并且您的 View 不应该被代码弄得乱七八糟。

关于asp.net-mvc - 在 ASP .Net MVC Controller 中查看每个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1374434/

相关文章:

css - ASP.NET 错误是添加内联 CSS 和覆盖样式

c# - 浏览器是否缓存动态图像?

asp.net - jquery UI对话框确认未确认

Android RelativeLayout : How to put a view above another view, 不一定触摸?

android - 在 Activity 中查找 fragment View 。 Android findFragmentByTag(String tag) 返回 null

.net - 显示属性 : No good for resources in App_GlobalResources

c# - Action 和 ActionLink 不适用于 ASP.NET Mono Razor View

mysql - "ANY Command denied for user"通过 JDBC 的 View-over-View DDL

Angular2 NGRX/商店 View 未更新

Android绘图矩形计时器带动画