使用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
}
答案 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">
。