У меня есть веб-приложение MVC 3.0 / RAZOR, использующее jQueryMobile, с аутентификацией формы на части сайта.
Страница аутентификации формы состоит из этого макета:
<!DOCTYPE html>
<html>
<head>
<title>Some title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile.structure-1.0.min.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"></script>
</head>
<body>
<div data-role="dialog" data-theme="b" data-overlay-theme="e">
<div data-role="header" data-theme="b">
@if ((ViewBag.HideTitle == null) || (!ViewBag.HideTitle))
{
<h1>@ViewBag.Title</h1>
}
</div>
<div data-role="content">
@RenderBody()
</div>
</div>
</body>
</html>
Ифактическая страница:
@model MyApp.Web.App.Models.LogOnModel
@{
Layout = "~/Views/Shared/DialogLayout.cshtml";
}
<h3>Sign In</h3>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@Html.ValidationSummary(true, "Authentication failed")
@using (Html.BeginForm()) {
<div>
<fieldset>
<legend></legend>
<div>
@Html.LabelFor(m => m.UserName)
</div>
<div>
@Html.TextBoxFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)
</div>
<p />
<div>
@Html.LabelFor(m => m.Password)
</div>
<div>
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</div>
<p /><p />
@Html.CheckBoxFor(m => m.RememberMe, new { data_theme = "a" })
@Html.LabelFor(m => m.RememberMe )
<div class="ui-block-b"><button type="submit" datatheme="b">Sign In</button></div>
</fieldset>
</div>
}
Аутентификация / переход диалога работает правильно, когда вы нажимаете на ссылку с уже загруженной страницы.
Например: - Home / Index (не прошедший проверку подлинности) - Нажмите «ссылку с проверкой подлинности» / Home / MyAuthenticatedPage
В этом случае инфраструктура jQueryMobile вызывает страницу через ajax, перенаправляет на/ Account / LogOn и корректно отображает страницу / Account / LogOn в виде диалогового окна.
Когда аутентифицированная страница вызывается напрямую из браузера, она загружается, но отображается только фон.Это верно, либо перейдя на страницу / Home / MyAuthenticated, либо перейдя непосредственно в / Account / LogOn через браузер.
Что мне не хватает?