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}/comment、id が数値である任意のルートを通じて解決されます。アクションを追加したGET主な理由は、混乱を避けるためです (ユーザーがフォームではなく手動でルートにアクセスしようとしたときに、存在しないことをユーザーに伝えるのではなくPOST、コメントが送信されたはずの投稿にリダイレクトします)。

問題は、HTTP GET リクエストでパーマネント リダイレクトの結果を使用しても、HTTP POST リクエスト中に永続的にリダイレクトされないかどうかです。

4

2 に答える 2

0

永続的なリダイレクトはメソッドごとに機能するため、同じ URL へのリクエストでPOSTコンテンツを提供しながら、特定の URL への永続的なリダイレクトを実際に実行できます。GET

于 2012-09-04T15:27:22.357 に答える
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 に答える