0

使用 asp .net mvc,我使用 post 和 get 提交表单。在我的控制器中,我只能访问 post 参数,但不能访问 GET 参数。

这是我的 HTML 表单:

<form name="input" action="/account/Login/?test=123" method="post">
   Username: <input type="text" name="username">
   Lastname: <input type="text" name="lastname">
   Password: <input type="text" name="password">
<input type="submit" value="Submit">
</form>

我的控制器:

[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public ActionResult Login(User model)
{
   string test = Request.QueryString["test"]; // this is null
}

我也为我的控制器尝试过这个,但无济于事......

[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
    public ActionResult Login(User model, string test)
    {
        // but "test" is also  null
    }
4

2 回答 2

1

你的例子非常适合我。在两种动作中,我得到 test=123

或者,您可以尝试使用Html.BeginForm()助手:

@using(Html.BeginForm("Account", "Login", new { test = "123" }, FormMethod.Post))
{
   @:Username: <input type="text" name="username"/>
   @:Lastname: <input type="text" name="lastname"/>
   @:Password: <input type="text" name="password"/>
   <input type="submit" value="Submit"/>
}
于 2013-07-10T20:43:17.080 回答
0

这不是 HTTP 动词的工作方式。

GET 和 POST 不是两种传递数据的方式;它们是两种不同类型的 HTTP 请求。(只有 POST 有有效载荷)


您要求查询字符串参数

但是,浏览器会从表单操作 URL 中去除查询字符串参数。
HTTP 请求根本不包括它。

相反,你应该把它放在一个<input type="hidden">.

于 2013-07-10T20:24:12.837 回答