具有自定义布局和 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>© @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。谜团已揭开。
是小事打动了你。
我有一个问题我无法解决,这让我发疯。我在 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>© @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。谜团已揭开。
是小事打动了你。