我使用这样的 URL 请求 ASP.NET MVC 控制器:
http://mysite.com/controller/myaction/Invalid%23name%25x
Invalid%23name%25x
参数在哪里
public ActionResult MyAction(string id) {
return View();
}
GET 请求工作正常。
MyAction 视图如下所示:
@using (Html.BeginForm()) {
...
<input name="Save" type="submit" value="Save" />
}
生成的 HTML 是:
<form action="/Controller/MyAction/Invalid#name%x" method="post">
...
<input name="Save" type="submit" value="Save" />
</form>
当我单击“保存”时,表单被发布并且 POST 请求转到
http://mysite.com/controller/myaction/Invalid#name%x
即初始 URL 被解码。这意味着 POST 操作仅接收参数的第一部分 - “无效”
[HttpPost]
public ActionResult MyAction(string id, ...) {
return View();
}
如何防止Html.BeginForm
解码初始 URL 以保留初始状态?