我应该为 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/