ASP.NET MVC Html.BeginForm解码URL

时间:2013-07-23 19:03:22

标签: asp.net-mvc

我正在使用这样的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解码初始网址以保留初始状态?

2 个答案:

答案 0 :(得分:1)

试试这个,在表单中传递ActionNameController

@using (Html.BeginForm("ActionName", "Controller")) {

答案 1 :(得分:0)

我个人建议你不要使用id作为字符串,因为你看到字符串中可以包含很多单词..让它意味着通常它(数值)。

使用类似http://mysite.com/controller/myaction?Name=Invalid%23name%25x

的内容
public ActionResult MyAction(string Name) {
    return View();
}

我想这对你有用..