我正在模态对话中使用部分页面来处理网站上其他地方的各种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");
}
答案 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