这是我的模特:
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")]
到控制器标题,它没有帮助
答案 0 :(得分:3)
小心点,ActionResult Login
不是你的控制者...这是你的行动,在行动的标题中添加:
[HttpPost]
public ActionResult Login(LoginModel model)
{
// your code
return View("NameofView"); //**UPDATE
}
和你的表格:
method="POST"
UPDATE *
请参阅您可以在return子句中显式设置视图的名称。 如果您的POST正在调用您的登录操作,那是因为您将其明确地放在表单定义中的action属性中。
<form action="<Here_your_action>" method="POST">
如果你想为GET和POST做两个“动作”,你必须编写两个表格来匹配这个定义。
答案 1 :(得分:1)
您应该使用:
@using (Html.BeginForm())
{
@Html.TextBoxForm(model => model.MyField)
}
而且,正如Max所说,在你的行动中使用return View();
。