控制器中的HttpPost ActionResult

时间:2016-04-05 12:29:56

标签: c# jquery asp.net-mvc

我正在模态对话中使用部分页面来处理网站上其他地方的各种CRUD操作并且它工作正常,我已经完成了与登录相同的一切(如下所示),但HttpPost动作结果在控制器没有被击中,我不知道为什么。

而是调用HttpGet

我错过了什么?

登录部分

@model Models.User
<script language="Javascript" type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script language="Javascript" type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script type="text/javascript">
    $(function () {
        $('#btn-login').click(function () {
            $('#modal-container').modal('hide');
        });
        $('#btn-close').click(function () {
            $('#modal-container').modal('hide');
        });
    });
</script>

<div class="login-container">
    @using (Html.BeginForm())
    {        
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="login-table">
            <div>
                @Html.LabelFor(m => m.Username)
                @Html.TextBoxFor(m => m.Username)
                @Html.ValidationMessageFor(m => m.Username, "", new { @class = "text-danger" })
            </div>
            <div>
                @Html.LabelFor(m => m.Password)
                @Html.PasswordFor(m => m.Password)
                @Html.ValidationMessageFor(m => m.Password, "", new { @class = "text-danger" })
            </div>
        </div>
        <div>
            <button type="submit" id="btn-login" class="btn btn-sm">Login</button>
            <button type="button" class="btn btn-default modal-close-btn" data-dissmiss="modal">Cancel</button>
        </div>
    }
</div>

帐户控制器登录操作方法

[AllowAnonymous]
[HttpGet]
public ActionResult Login()
{
    return PartialView("Login");
}

[HttpPost]
public ActionResult Login(User model)
{
    if(ModelState.IsValid)
    {
        // do stuff
    }
    return RedirectToAction("Index", "Announcements");
}

2 个答案:

答案 0 :(得分:2)

您的GET方法标有[AllowAnonymous],表示您的控制器标有[Authorize],这意味着您的POST方法也必须标有[AllowAnonymous](用户必须经过授权才能使用在此方法中执行)

[HttpPost]
[AllowAnonymous]
public ActionResult Login(User model)
{
    if(ModelState.IsValid)
    {
        // do stuff
    }
    return RedirectToAction("Index", "Announcements");
}

答案 1 :(得分:-1)

在表单属性

中尝试此操作
@Html.BeginForm("Login", "Home", , new { modal= Model }, FormMethod.Post)

//Login- action Name that has to be hit

//Home     - Controller name