2012-01-14 9 views
0

パーシャルビュー(ログイン、ユーザー名、パスワード、送信ボタン)があり、パーシャルビューが_layout(materpage)で使用されています。MVC3パーシャルビューメソッドが起動しない

だから、私の_layoutページに、私が持っている:

<div style="text-align: right"> 
    @Html.Partial("_LoginPartial") 
</div> 

私_LoginPartialは、次のコードがあります。

@if (Request.IsAuthenticated) 
{ 
    <textarea>Welcome! 
     [ @Html.ActionLink("Log Off", "Logout", "Account")]</textarea> 

} 
else 
{ 
    @Html.Partial("~/Views/Account/Index.cshtml") 
} 

インデックスファイルログインボックスを表示するには、次のようになります

@using GalleryPresentation.Models 
@model LoginModel 

<script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script> 
@using (Html.BeginForm("index", "Account")) 
{ 
    <table> 
     <tr> 
      <td>@Html.LabelFor(m => m.Username)</td> 
      <td>@Html.TextBoxFor(m => m.Username)</td> 
     </tr> 
     <tr> 
      <td>@Html.LabelFor(m => m.Password)</td> 
      <td>@Html.PasswordFor(m => m.Password) kjkj</td> 
     </tr> 
     <tr> 
      <td colspan="2"><input type="submit" value="Login"/></td> 
     </tr> 
     <tr> 
      <td colspan="2">@Html.ValidationSummary()</td> 
     </tr> 
    </table> 

} 

私のAccountCOntrollerには、次のコードがあります。

public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Index(LoginModel loginModel) 
    { 
     if(ModelState.IsValid) 
     { 
      var g = new GallaryImage(); 
      var user = g.LoginUser(loginModel.Username, loginModel.Password); 
      if(user != null) 
      { 
       FormsAuthentication.SetAuthCookie(user.username, false); 
       return RedirectToAction("Index", "Home"); 
      } 
      ModelState.AddModelError("", "Invalid Username/Password"); 
     } 
     return View(loginModel); 
    } 

    public ActionResult Logout() 
    { 
     FormsAuthentication.SignOut(); 
     return RedirectToAction("Index", "Home"); 
    } 

すべてのメソッドにブレークポイントがありますが、決してヒットしません。送信ボタンを押すと、URLが次のように変更されます。

http://localhost:8741/?Username=myusername&Password=mypassword 

誰かが私が行っているエラーを見つけられますか?

答えて

1

デフォルトでは、Html.BeginFormはGETリクエストを作成するため、ビューからGETリクエストを行っています。ただし、アクションはPOST要求のみを受け入れます。

@using (Html.BeginForm("index", "Account")) から@using (Html.BeginForm("index", "Account", FormMethod.Post))に変更できます。

+0

それを試しましたが、まだブレークポイントに当たっていません。フォーム投稿はデフォルトで投稿されると思った? – Craig

+0

@Craigフォームが 'http:// localhost:8741 /?Username = myusername&Password = mypassword'にリダイレクトされている場合、ブラウザはGETフォームの送信をクエリパラメータに変換するので、HTTP GETリクエストを示します。デバッグを支援するために、ブラウザが行うネットワーク要求を調べることができます。これは、ブラウザに付属している開発ツールや、Fiddlerのようなサードパーティのツールを使用して行うことができます。 –

+0

スティーブン - フィドラーがお手伝いしました。私はそれが

タグを持っている私の_layoutに来て、それが私のログインボックスに私のフォームタグを殺していたことが判明しました。一定。ありがとう。 – Craig

関連する問題