我試圖添加通過JavaScript在頁面上生成的表單發佈。MVC3表單POST失敗,'用於訪問路徑...不允許'
我開始了定義了以下路線:
routes.MapRoute(name: "ItemLinks", url: "ItemRequestController/DoItemRequest", defaults: new { controller = "ItemRequest", action = "DoItemRequest" });
但我不能讓我的控制器的操作方法從請求對象的表單值。
所以我定義的以下路線:隱藏字段的
@using (Html.BeginForm("DoItemRequest", "ItemRequestController", FormMethod.Post))
{
@Html.AntiForgeryToken()
<input type="hidden" name="hid_ItemID" value="" />
<input type="hidden" name="hid_PositionOnPage" value="" />
在js函數,我定義的值(基於點擊):
routes.IgnoreRoute("ItemRequestController/{*pathInfo}");
作爲表單定義,那麼這樣做:
document.forms[0].submit();
問題是,我現在得到錯誤...
不允許使用HTTP動詞POST訪問路徑 '/ ItemRequestController/DoItemRequest'。
如何解決此問題,並在我的控制器操作方法中讀取表單POST值?
- 更新 -
無法相信我忘了添加這個...
我敢肯定有拉動的請求VAR的更優雅的方式......開放建議。
控制器的方法:
[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult DoItemRequest()
{
int itemListID = 0;
int pagePositionNumber = 0;
int.TryParse(Request["itemListID"], out itemListID);
int.TryParse(Request["pagePositionNumber"], out pagePositionNumber);
你的控制器方法是什麼樣的?你是否限制了該方法允許的動詞? – 2011-12-30 18:41:03
@GarrettVlieger - 忘記發佈控制器方法簽名。以上更新。 – ElHaix 2011-12-31 00:13:17