跨HTTP方法的永久重定向?

时间:2012-08-25 02:32:39

标签: c# asp.net-mvc-3 redirect routing

我的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}/comment路由解析,其中id是数值。我主要添加GET操作以避免混淆(而不是仅仅告诉用户当他们尝试手动访问路径而不是通过表单POST时它不存在,我将它们重定向到帖子评论将被提交至。)

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

2 个答案:

答案 0 :(得分: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; }
}

答案 1 :(得分:0)

永久重定向基于每个方法工作,因此您可以在POST上对给定网址执行永久重定向,同时向GET个请求提供相同网址的内容。