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

时间:2015-01-29 15:49:14

标签: asp.net-mvc asp.net-mvc-4

我有一个问题我无法绕过头来,这让我发疯了。我在VS2013中使用了MVC项目的默认模板,一切正常。我可以使用表单身份验证等创建的用户登录。我遇到的问题是当我将_ViewStart放入帐户视图文件夹,并使用自定义布局登录页面时......我不断获取每次我尝试登录时都会重定向到登录页面。我的Login Post方法也没有被调用,只有Default Login 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。

1 个答案:

答案 0 :(得分:0)

确定。我很笨

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

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

这是让你受益匪浅的事情。