2016-04-05 16 views
1

私は、モーダルダイアログ内の部分ページを使用して、ウェブサイト上のさまざまなCRUDアクションを処理しています。これはうまくいきます。ログイン(下記参照)ではすべて同じ処理を行っていますが、HttpPostアクションはコントローラがヒットしていないと私はなぜわからない。HttpPost ActionResult in Controller

代わりに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

フォーム属性でこれを試してみてください(この方法でコードが実行されるまで、ユーザーが許可されている)あなたのコントローラがPOSTメソッドも[AllowAnonymous]でマークされなければならないことを意味し、[Authorize]が付いている示唆

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

あなたのGETメソッドがでマークされ

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

//Login- action Name that has to be hit 

//Home  - Controller name 
+0

デフォルトのアクションは 'POST'です。これは間違っており、役に立たないでしょう。 – DavidG