这是我的模型:
public class LoginModel {
public string username { get; set; }
public string password { get; set; }
public string ReturnUrl { get; set; }
}
这是我的 Controller header :
[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”时,绑定(bind)不起作用。 我尝试添加:
[AcceptVerbs("POST", "GET")]
到 Controller header ,这没有帮助
最佳答案
请注意,ActionResult Login
不是您的 Controller ...它是您的操作,请将此添加到操作的 header 中:
[HttpPost]
public ActionResult Login(LoginModel model)
{
// your code
return View("NameofView"); //**UPDATE
}
和您的表格:
method="POST"
更新*
请注意,您可以在 return 子句中显式设置 View 的名称。 如果您的 POST 正在调用您的登录操作,那是因为您将其显式放置在表单定义内的操作属性中。
<form action="<Here_your_action>" method="POST">
如果您想同时执行 GET 和 POST 的“操作”,则必须编写两个表单来匹配此定义。
关于c# - MVC 4 使用 POST 方法发布不起作用(使用 GET 方法 - 有效),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16278887/