Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc mvc问题,局部视图显示_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc mvc问题,局部视图显示

Asp.net mvc mvc问题,局部视图显示,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我有一个关于局部观点的问题。我想在我创建的标题登录表单中显示。在HomeController中,我有两个操作:一个是登录,另一个是使用httppost方法登录。 在部分视图_Layout.cshtml中,我有一个只发送代码的页脚div: <td style="text-align:center"> <h3>Bookstore</h3> @Html.Partial("_LoginPartial") </td>

我有一个关于局部观点的问题。我想在我创建的标题登录表单中显示。在HomeController中,我有两个操作:一个是登录,另一个是使用httppost方法登录。 在部分视图_Layout.cshtml中,我有一个只发送代码的页脚div:

 <td style="text-align:center">
        <h3>Bookstore</h3>
        @Html.Partial("_LoginPartial") 
 </td>
当按下登录按钮时,mvc将我切换到显示登录表单的单独页面。我不想那样。它必须留在标题中。功能还可以,但我有一个问题,如何显示只有在标题。有人知道我错在哪里吗?

你必须使用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>
}

显示登录操作的控制器代码同样,请确保登录后的操作返回部分视图,否则整个页面将在目标元素中呈现。
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);
}
 @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>
}