MVC 4发布与POST方法不起作用(用GET方法 - 作品)
这是我的模型:MVC 4发布与POST方法不起作用(用GET方法 - 作品)
public class LoginModel {
public string username { get; set; }
public string password { get; set; }
public string ReturnUrl { get; set; }
}
这是我的控制器头:
[AllowAnonymous]
public ActionResult Login(
LoginModel model
)
这是我的看法:
<form action="@Url.Action("Login", "Login")" method="GET">
@Html.HiddenFor(m=>m.ReturnUrl)
User name: @Html.TextBoxFor(f=>f.username)
<br />
Password: @Html.PasswordFor(f=>f.password)
<br /><br />
<button type="submit">Login</button>
</form>
当我将表单上的方法从“GET”更改为“POST”时,绑定不起作用。 我尝试添加:
[AcceptVerbs("POST", "GET")]
控制器头,它不利于
要当心,ActionResult Login
是不是你的控制器...这是你的行动,在头部添加这个您动作:
[HttpPost]
public ActionResult Login(LoginModel model)
{
// your code
return View("NameofView"); //**UPDATE
}
和您的形式:
method="POST"
ü PDATE *
看到您可以在return子句中显式设置视图的名称。 如果你的POST调用你的登录动作,那是因为你明确地把它放在你的表单定义中的action属性中。
<form action="<Here_your_action>" method="POST">
如果您想对GET和POST执行两个“操作”,则必须编写两个表单来匹配此定义。
嗨,谢谢你的回答, 我需要这个动作来处理get和post方法。不可能? – Shahar 2013-04-29 14:08:52
@Shahar,我从来没有将它们一起使用,我不知道这是否可行,但始终是一种最佳实践来划分责任,但是如果您重新使用Action for Get目的,那么您将传递一个空对象作为参数,并且如果您要维护代码在未来将变得难以管理。我建议你分成一个单独的GET和POST。 – 2013-04-29 14:22:04
当我将它们分开时,每个请求都会重定向到Login操作(它将返回包含用户和密码输入的视图)。我将[AllowAnonymous]添加到新的检查方法中,但它仍然在那里。 也许与web.config配置有关的问题?这里是:
你应该使用:
@using (Html.BeginForm())
{
@Html.TextBoxForm(model => model.MyField)
}
而且,正如马克斯说,在你的行动使用return View();
。
您对GET和POST只有一个操作方法吗? – Shyju 2013-04-29 12:45:20
是的,这不可能吗? – Shahar 2013-04-29 14:12:51