c# - MVC 4 使用 POST 方法发布不起作用(使用 GET 方法 - 有效)

标签 c# html asp.net-mvc asp.net-mvc-4 razor

这是我的模型:

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/

相关文章:

c# - ASP.NET Core - 创建自定义模型验证

c# - 单击按钮时隐藏 Gridview 行

c# - 与 WCF 通信的 Android 应用程序

c# - SQL 数据库中的单选按钮值

javascript - 创建 Wordpress 网站的移动版本

asp.net - 如何从url中删除returnurl?

asp.net-mvc - asp.net mvc app_data 文件夹

jquery - 简化 slider 的 jquery 脚本

javascript - 粘头不粘

asp.net-mvc - 更改 asp.net MVC 中的默认模型绑定(bind)器