我正在使用这样的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
解码初始网址以保留初始状态?
答案 0 :(得分:1)
试试这个,在表单中传递ActionName
和Controller
@using (Html.BeginForm("ActionName", "Controller")) {
答案 1 :(得分:0)
我个人建议你不要使用id
作为字符串,因为你看到字符串中可以包含很多单词..让它意味着通常它(数值)。
使用类似http://mysite.com/controller/myaction?Name=Invalid%23name%25x
public ActionResult MyAction(string Name) {
return View();
}
我想这对你有用..