2016-04-05 50 views
1

我使用模式對話框中的部分頁面來處理網站上其他地方的各種CRUD操作,並且它工作正常,我已經完成了與登錄(如下所示)相同的所有操作,但操作結果中的HttpPost控制器沒有被擊中,我不知道爲什麼。控制器中的HttpPost ActionResult

而是調用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

'[使用AllowAnonymous]'上POST方法標記? –

+0

添加登錄([FromBody]用戶模式) –

+0

@StephenMuecke謝謝!奇怪的是不需要另一個登錄應用程序,但它排序它,謝謝! – PurpleSmurph

回答

2

你的GET方法被標記爲[AllowAnonymous]表明您的控制器被標有[Authorize],這意味着你POST方法還必須與[AllowAnonymous](直到在此方法的代碼執行所述用戶被授權)

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

形式屬性試試這個

@Html.BeginForm("Login", "Home", , new { modal= Model }, FormMethod.Post) 

//Login- action Name that has to be hit 

//Home  - Controller name 
+0

默認的操作是'POST',所以這是錯誤的,並沒有幫助。 – DavidG

相關問題