0

我的CommentsController.

    [HttpGet]
    [Authorize]
    public ActionResult New(long id)
    {
        return RedirectToAction("Details", "Posts", new { id }); // lets be graceful.
    }

    [HttpPost]
    [Authorize]
    public ActionResult New(long id, string comment, IMiniPrincipal principal)
    {
        throw new NotImplementedException();
    }

两者都通过任何posts/{id}/commentid 为数值的路由解析。我添加了该GET操作主要是为了避免混淆(当他们尝试手动而不是通过表单访问路由时,我不只是告诉用户它不存在,而是POST将他们重定向到评论将被提交到的帖子)。

问题是我是否可以在 HTTP GET 请求中使用永久重定向结果,但在 HTTP POST 请求期间仍然无法永久重定向?

4

2 回答 2

0

将 POST 处理程序映射到模型可能会更好,这样可以大大降低相同的 URL 映射到两个操作的可能性。

因此,您的代码可能会更改为:

[HttpPost]
[Authorize]
public ActionResult New(CommentModel model)
{
    // { ...code... }
}

模型看起来像:

public class CommentModel
{
    public long ID { get; set; }

    public string Comment { get; set; }

    public IMiniPrincipal Principal { get; set; }
}
于 2012-08-25T02:44:29.170 回答
0

永久重定向在每个方法的基础上工作,因此您实际上可以对POST给定 url 执行永久重定向,同时为GET对同一 url 的请求提供内容。

于 2012-09-04T15:27:22.357 回答