搜索引擎优化(SEO)友好/无国籍
•网址对搜索引擎来说更加友好(例如,与 mywebapplication/users/getuser.aspx (在会话中传递的 mywebapplication.com/users/ ID)相比,1-检索用户 ID 为1)。类似地,由于 MVC 是无状态的,这就消除了从同一个窗口生成多个 Web 浏览器的用户的头疼问题(会话冲突)。沿着同样的思路,MVC 坚持无状态 Web 协议,而不是与之“战斗”。
与需要高度控制的开发人员合作良好
• ASP.NET web 表单中的许多控件在呈现页面时自动生成大部分原始 HTML。这会给开发人员带来麻烦。使用 MVC,它可以更好地完全控制所呈现的内容,而且没有任何意外。更重要的是,HTML 表单通常比 Web 表单小得多,这可以等同于性能的提升——这是需要认真考虑的。
任何一个年纪足够大的人,只要记得经典的 ASP,都会记得打开一个混合了 html 和 javascript 代码的页面的噩梦——即使是最小的页面,搞清楚它到底在做什么也是一件痛苦的事情。我可能错了,我希望我错了,但是 MVC 看起来像回到了那些糟糕的日子。
当 ASP.Net 出现时,它被誉为救世主,将代码从内容中分离出来,并允许我们让网页设计师创建 html,让编码人员在代码后面工作。如果我们不想使用 ViewState,我们就关闭它。如果由于某种原因我们不想使用代码,我们可以像经典的 ASP 一样将代码放在 html 中。如果我们不想使用 PostBack,我们会重定向到另一个页面进行处理。如果我们不想使用 ASP.Net 控件,我们使用标准的 html 控件。如果我们不想在控件上使用 ASP.Net runat = “ server”,我们甚至可以询问 Response 对象。
现在有些人(可能是从未编写过经典 ASP 程序的人)决定是时候回到把代码和内容混合在一起并称之为“关注点分离”的时代了。当然,你可以创建更干净的 html,但你可以与经典的 ASP。说“如果你的视图中有太多的代码,你就没有正确地编程”就像说“如果你在经典的 ASP 中编写了结构良好的注释代码,它就比 ASP.NET 干净得多,也更好”
如果我想回到代码和内容混合的话,我会考虑使用 PHP 进行开发,PHP 对于这种开发有一个更加成熟的环境。如果 ASP.NET 有这么多问题,那么为什么不解决这些问题呢?
最后但并非最不重要的是,新的 Razor 引擎意味着更难区分 html 和代码。至少我们可以在 ASP 中查找开始和结束标记,例如 <% 和% > ,但是现在唯一的指示符将是@符号。
[HttpGet]
public ActionResult DetailList(ImportDetailSearchModel model)
{
Data.ImportDataAccess ida = new Data.ImportDataAccess();
List<Data.ImportDetailData> data = ida.GetImportDetails(model.FileId, model.FailuresOnly);
return PartialView("ImportSummaryDetailPartial", data);
}