我试图添加通过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