我可以使用相同的asp mvc .net控制器使用GET和POST吗?

时间:2013-07-10 20:20:27

标签: .net asp.net-mvc forms controller http-post

使用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
    }

2 个答案:

答案 0 :(得分: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"/>
}

答案 1 :(得分:0)

这不是HTTP动词的工作原理。

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


您要求查询字符串参数

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

相反,您应该将其放在<input type="hidden">