如果我没弄错的话 - ASP.NET MVC的约定似乎要我为控制器视图执行以下操作。
到目前为止,我创建了“产品”目录,我将“索引”视图放入其中。然后我创建一个'ProductsController'并在其上创建一个返回View的'Index'方法。只返回没有参数的View()将获取'Index.aspx'页面,因为它与方法的名称相同。
public class ProductsController : Controller
{
public ActionResult Index()
{
return View(); // looks for Index.aspx in Products directory
}
}
现在就好了。但我最终会得到十亿个Index.aspx页面,我就是其中一个从不关闭任何文件的人,所以我最终会发疯。
或者,我可以创建Products / Products.aspx并将我的控制器更改为以下内容:
public class ProductsController : Controller
{
public ActionResult Index() // my default routing goes to Index (from sample project)
{
return View("Products");
}
}
我理解它是如何工作的,并且它在MVC设计模式中完全可以做到这一点。它不是黑客或类似的东西。
我的问题(在收听this PDC视频后)是关于自定义性的约定在MVC(或任何正确的短语)中受到青睐。
所以我想知道我是否错过了第三种方式,或者人们对Visual Studio中的50个索引标签感觉不错?
答案 0 :(得分:2)
我认为你应该在操作之后命名方法并命名视图(如果它有意义并且它不在动作之间共享,与动作相同)。您可能应该更改路由机制,因为Index
实际上不是一个描述性名称。动作名称应该表示它的作用(就像任何方法一样),不应该硬编码到Index
或类似的东西。应该编辑路由。
答案 1 :(得分:2)
每个控制器的默认操作具有相同的名称只是简化了路由(检查global.asax)。此外,所有东西(产品,书籍,联系人......)使用相同功能的同名操作/视图,然后代码变得更容易导航和理解。当作为团队的一部分工作时,这种惯例的使用尤其重要,因为它将鼓励开发人员之间的一致代码。
在查看另一个问题时,我在codeplex上的MVCContrib项目中遇到了SimplyRestfulRouting。这可能会给你一些想法。
答案 2 :(得分:0)
这只是一种模式。使用该模式,但让它适合您。就个人而言,我喜欢用我们的函数命名我的观点,而且我没有很多Index.aspx页面,因为我没有很多索引。