2015-10-14 96 views
0

我有一個關於局部視圖的問題。我想顯示在我創建的標題登錄表單中。在HomeController中,我有兩個操作:一個是Login,另一個是使用httppost方法登錄。 在局部視圖(_Layout.cshtml)我有一個碼 - 僅發送頁腳DIV:mvc問題,局部視圖顯示

<td style="text-align:center"> 
     <h3>Bookstore</h3> 
     @Html.Partial("_LoginPartial") 
</td> 

在登錄視圖我有:

@using(Html.BeginForm("Login", "Home", FormMethod.Post)){ 
@Html.AntiForgeryToken() 
@Html.ValidationSummary(true) 
<table> 
    <tr> 
     <td>@Html.LabelFor(a=>a.Username)</td> 
     <td>@Html.TextBoxFor(a=>a.Username)</td> 
     <td>@Html.ValidationMessageFor(a=>a.Username)</td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(a=>a.Password)</td> 
     <td>@Html.PasswordFor(a=>a.Password)</td> 
     <td>@Html.ValidationMessageFor(a=>a.Password)</td> 
    </tr> 
    <tr> 
     <td> 
      <input type="submit" value="Login" /> 
     </td> 
    </tr> 
</table>} 

控制器

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

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Login(Users u) 
{ 
    if (ModelState.IsValid) { 
     using (DatabaseLoginEntities dl = new DatabaseLoginEntities()) { 
      var v = dl.Users.Where(a => a.Username.Equals(u.Username) && a.Password.Equals(u.Password)).FirstOrDefault(); 
      if (v != null) { 
       Session["LogedUserId"] = v.UserAccountID.ToString(); 
       Session["LogedUserFullName"] = v.FullName.ToString(); 
       return RedirectToAction("AfterLogin"); 
      } 
     } 
    } 
    return PartialView("_LoginPartial", u); 
} 

當按登錄按鈕,mvc將我切換到顯示登錄窗體的單獨頁面。我不希望這種情況發生。它必須留在標題中。功能是好的,但我有問題如何只顯示標題。有沒有人有想法我錯了?

+0

顯示控制器代碼登錄行動 – JB06

回答

0

必須使用AJAX

@using (Ajax.BeginForm("Login", "Home", 
             new AjaxOptions 
             { 
              HttpMethod = "Post", 
              InsertionMode = InsertionMode.Replace 
              , 
              UpdateTargetId = "div_id" 
             } 
            )){ 
<table> 
    <tr> 
     <td>@Html.LabelFor(a=>a.Username)</td> 
     <td>@Html.TextBoxFor(a=>a.Username)</td> 
     <td>@Html.ValidationMessageFor(a=>a.Username)</td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(a=>a.Password)</td> 
     <td>@Html.PasswordFor(a=>a.Password)</td> 
     <td>@Html.ValidationMessageFor(a=>a.Password)</td> 
    </tr> 
    <tr> 
     <td> 
      <input type="submit" value="Login" /> 
     </td> 
    </tr> 
</table> 
} 
+0

另外,確保你的行動AfterLogin返回一個局部視圖,或整個頁面將在目標元素呈現。 – JB06