ページにJavascriptで生成されたフォーム投稿を追加しようとしています。MVC3フォームでPOSTに失敗しました 'パスにアクセスするのが許可されていません'
私は、次のルートに定義で始まっ:
routes.MapRoute(name: "ItemLinks", url: "ItemRequestController/DoItemRequest", defaults: new { controller = "ItemRequest", action = "DoItemRequest" });
しかし、私は私のコントローラのアクションメソッドでリクエストオブジェクトからフォームの値を取得することができませんでした。
だから、以下の経路定義:フォームは次のように定義される
routes.IgnoreRoute("ItemRequestController/{*pathInfo}");
を:JS関数で
@using (Html.BeginForm("DoItemRequest", "ItemRequestController", FormMethod.Post))
{
@Html.AntiForgeryToken()
<input type="hidden" name="hid_ItemID" value="" />
<input type="hidden" name="hid_PositionOnPage" value="" />
、私は隠しフィールドの(クリックに基づいて)の値を定義、その後、実行します。
document.forms[0].submit();
問題は、私は今のエラーを取得していますということです...
パス '/ ItemRequestController/DoItemRequest'へのアクセスに使用されたHTTP動詞POSTは許可されていません。
これを回避するにはどうすればよいですか?コントローラの動作方法でPOSTの値を読み込むにはどうすればよいですか?
- UPDATE -
私はにオープン...要求VARの引き上げ、よりエレガントな方法があります確信している...私はこれを追加するのを忘れ
を信じることができません提案。
コントローラ方法:
[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult DoItemRequest()
{
int itemListID = 0;
int pagePositionNumber = 0;
int.TryParse(Request["itemListID"], out itemListID);
int.TryParse(Request["pagePositionNumber"], out pagePositionNumber);
コントローラメソッドはどのように見えますか?メソッドに許される動詞を制限していますか? –
@GarrettVlieger - コントローラメソッドシグネチャをポストするのを忘れました。上記で更新されました。 – ElHaix