具有自定义布局和 ViewStart 的 MVC 登录页面

MVC Login Page with Custom Layout and ViewStart

我有一个问题我无法解决,这让我发疯。我在 VS2013 中使用了 MVC 项目的默认模板,一切正常。我可以使用我使用表单身份验证等创建的用户登录。我遇到的问题是,当我将 _ViewStart 放入帐户视图文件夹,并为登录页面使用自定义布局时......我不断被重定向到每次我尝试登录时的登录页面。我的登录 Post 方法也没有被调用,只有默认登录 ActionResult 触发。如果我取出 ViewStart 文件并使用默认布局,我没有问题。

这是我的 _LoginLayout.cshtml

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Corporate</title>
    <link rel="stylesheet" type="text/css" href="~/Content/style.css">
    @Scripts.Render("~/bundles/modernizr")
    @Scripts.Render("~/Scripts/jquery-1.10.2.min.js")
</head>
<body>
    <div class="holder login">
        <div class="row">
            <div class="col-lg-5 left">
                <a href="@Url.Action("Index", "Home")"><img src="~/images/logo.png" alt="logo" /></a>
            </div>
        </div>

        <div class="row">
            <div class="col-lg-6 border">
                <img src="~/images/corporate.png" alt="corporate" />
                <br />

                <form>
                    @RenderBody()
                </form>
            </div>
        </div>

        <footer>
            <p>&copy; @DateTime.Now.Year - Application. All Rights Reserved.</p>
        </footer>
        @Scripts.Render("~/bundles/jquery")
        @Scripts.Render("~/bundles/bootstrap")
        @RenderSection("scripts", required: false)
    </div>
</body>
</html>

这是 ViewStart...

@{
    Layout = "~/Views/Shared/_LoginLayout.cshtml";
}

登录页面与启动项目时提供的样板页面基本相同。一切正常,直到我开始尝试使用自定义布局和 viewstart。

好的。我很笨

@using (Html.BeginForm("Login", "Account",....

创建表单标签。我的布局有 Form 标签包裹着 RenderBody()。我本质上是在嵌套表单标签,这是一个 nono。谜团已揭开。

是小事打动了你。