我对MVC很陌生,无法以这种或那种方式找到这个问题的答案。 MVC 1(或者我认为是2)中是否有内置架构,允许您通过特定操作方法的属性而不是Global.asax指定路由映射?我可以看到它的使用仅限于一定程度,因为多个方法可以绑定到相同的操作,因此需要不必要地重复路由,但我的问题仍然存在。
另外,除了我刚才提到的关于多种方法的相同操作的那个之外,有没有人看到实现这样的东西的任何问题?
注意:我不是要求 HOW 来实现这一点。只检查是否存在这样的东西,如果没有,是否比它的价值更麻烦。
答案 0 :(得分:4)
您还可以尝试通过AttributeRouting提供的NuGet。披露 - 我是项目作者。我已经在个人和专业项目中使用了这个并取得了巨大的成功,并且不会回到ASP.NET MVC的默认路由机制,除非我不得不这样做。看看github wiki。那里有许多功能的大量文档。
简单用法如下:
public class RestfulTestController : Controller
{
[GET("Resources")]
public ActionResult Index()
{
return Content("");
}
[POST("Resources")]
public ActionResult Create()
{
return Content("");
}
[PUT("Resources/{id}")]
public ActionResult Update(int id)
{
return Content("");
}
[DELETE("Resources/{id}")]
public ActionResult Destroy(int id)
{
return Content("");
}
}
AttributeRouting是高度可配置的,并且有一些扩展点。看看吧。
答案 1 :(得分:1)
我会为此推荐ASP.NET MVC Attribute Based Route Mapper。这是第三方库,不附带ASP.NET MVC 1或2.用法如下:
public SiteController : Controller
{
[Url("")]
public ActionResult Home()
{
return View();
}
[Url("about")]
public ActionResult AboutUs()
{
return View();
}
[Url("store/{category?}")]
public ActionResult Products(string category)
{
return View();
}
}
然后在global.asax
中,您只需致电routes.MapRoutes()
注册您的行动路线。
实现这一点很简单。