Asp.net .net mvc路由与参数继续操作

Asp.net .net mvc路由与参数继续操作,asp.net,asp.net-mvc-4,asp.net-routing,Asp.net,Asp.net Mvc 4,Asp.net Routing,我想知道这是否可能(似乎应该是) 我想要一条路线,例如: /事件/{id}/addcomment 其中,{id}是一个参数,用于标识要添加注释的事件。我知道我可以简单地执行/events/addcomment/{id},但这不是我想要传递此操作的方式,所以这是我通过查看其他so帖子得到的结果 我在global.asax文件中注册了一个路由- routes.MapRoute( "AddComment", "Events/{id}/Ad

我想知道这是否可能(似乎应该是)

我想要一条路线,例如:

/事件/{id}/addcomment

其中,{id}是一个参数,用于标识要添加注释的事件。我知道我可以简单地执行/events/addcomment/{id},但这不是我想要传递此操作的方式,所以这是我通过查看其他so帖子得到的结果

我在global.asax文件中注册了一个路由-

        routes.MapRoute(
            "AddComment",
            "Events/{id}/AddComment",
            new { controller = "Events", action = "AddComment", id = "" }
        );
然后在事件控制器中执行我的操作-

[ActionName("{id}/AddComment")]
public ActionResult AddComment(int id)
{
    Event _event = db.Events.Find(id);
    var auth = OAContext.LoginRedirect("Must be logged in to add a comment");
    if (auth != null)
        return auth;
    else if (_event == null)
        return HttpNotFound();
    else
        return View(_event);
}
我尝试过使用ActionName注释和不使用ActionName注释,但不完全确定我在这里做错了什么

稍后,我计划使用诸如/events/{eventId}/comment/{commentId}/{action}之类的路由,允许用户编辑/删除事件中的注释,但首先我需要弄清楚如何准确地路由它

我问这个问题的原因是我没有在url中看到任何其他正在进行操作的参数示例,所以也许我无法做到这一点,如果是这样的话,最好知道


我的问题:这种url格式可能吗?如果可能,将其编码到路由和控制器中的正确方法是什么?

这是一种应该有效的路由:

routes.MapRoute(
   "AddComment",
   "Events/{id}/AddComment",
   new { controller = "Events", action = "AddComment" }
);
你不需要在你的动作上使用任何ActionName属性,它就可以工作。只需确保在默认路由之前定义了此路由即可。还要注意,由于
{id}
路由参数不是路由定义的最后一部分,因此它不能再是可选的。生成管线时,应始终为其指定一个值

例如:

@Html.ActionLink(
    "click me", 
    "AddComment", 
    "Events",
    new { id = "123" },
    null
)

不用这个试试:
[ActionName(“{id}/AddComment”)]
是的,这确实有效,奇怪的是我不确定我做了什么更改,但我想我最初是这样测试的,并在失败后添加了注释。这是我需要做的调整,将路由置于默认规则之前,谢谢。(以及删除注释)如上所述。我一定是在添加了注释之后才这么做的,我没有想过在没有注释的情况下尝试它。