Pie*_* SS 5 c# asp.net-mvc asp.net-mvc-routing route-constraint
在操作中操作数据时,通常会收到一个ID作为参数,但是您需要对该ID进行一些错误处理.您必须为每个操作执行的错误处理之一是确保ID高于0(不是负数).因此,我不想在动作中处理这个问题,而是想添加一个路由约束,这样如果它是一个负id,就不会路由到该动作.
这是我的代码:
//route definition
routes.MapRoute(
"default route" ,
"{controller}/{action}/{id}" ,
new { id = UrlParameter.Optional },
new { id = @"^\d+$" }
);
//action definition (note I also tried with only [HttpPost] and with nothing same result
[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get )]
public ActionResult Edit( int id )
Run Code Online (Sandbox Code Playgroud)
当你对动作执行GET操作时,一切正常,但是当我发布POST时,我会得到以下错误,它应该只是转到404页面
HTTP verb POST used to access path '/object/edit/-2' is not allowed.
[HttpException (0x80004005): The HTTP verb POST used to access path '/object/edit/-2' is not allowed.]
System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state) +740
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +632
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +194
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?也许更好的解决方案?
编辑:刚刚注意到一些有趣的东西,我最初认为错误信息是500,但它的405是"找不到方法"
你说:
不允许使用 HTTP 谓词 POST 来访问路径“/object/edit/-2”。
然而,例外情况是:
不允许使用 HTTP 谓词 POST 来访问路径“/profile/editlink/-2”。
编辑:
我认为这可能与你的问题有关。
然而事实并非如你所说。
| 归档时间: |
|
| 查看次数: |
659 次 |
| 最近记录: |