我想知道这是否可能(似乎应该是)
我想有一条路线,例如:
/events/{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 注释,但不完全确定我在这里做错了什么。
稍后我计划拥有诸如 /events/{eventId}/comment/{commentId}/{action} 之类的路由,允许用户从事件中编辑/删除他们的评论,但首先我需要弄清楚如何路由这个.
我问这个的原因是我没有在 url 中看到任何其他参数执行操作的示例,所以也许我只是无法做到这一点,如果是这样的话,那就太好了。
我的问题:这种 url 格式是否可行,如果可以,将其编码到路由和控制器中的正确方法是什么?