我来自Rails背景,我在围绕微软的MVC框架时遇到了问题。
今天是路由。 Rails为您提供了名称空间(例如Admin),它等同于.NET MVC3中的Areas。 Rails还允许您在路由中定义嵌套资源,这些资源将为您提供示例/ posts / 1 / comments / 1 / edit,在您的操作中,您基本上可以获得params [:post_id]和params [:id]。
我在ASP.NET MVC3中需要类似的东西,但不知道如何解决这个问题。谷歌搜索导致至少30种不同的方式来实现这一点,而没有提到区域。
感觉我应该在这里添加/修改内容:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
但不确定在哪里。有什么建议吗?
答案 0 :(得分:2)
我认为你在正确的文件中(你的AreaRegistration.cs文件)。我更喜欢对我的路线更加明确,而不是使用他们提供的默认“catch all”类型的路线。所以这是我如何处理这个问题的一个例子:
在RegisterArea方法中,在现有路线之前添加类似的东西(或者将所有路线全部除去)
context.MapRoute(
"Edit_Comment",
"posts/{postId}/comments/{commentId}/edit",
new { controller = "Comment", action = "Edit" }
);
然后在您的CommentController.cs中,您将执行以下操作:
public ActionResult Edit(int postId, int commentId)
{
// Do your edit logic then return an ActionResult
}