MVC 3.0 + jQueryMobile + FormAuth: можно ли принудительно вызвать диалогоподобный переход для аутентификации формы при непосредственном вызове? - PullRequest
0 голосов
/ 24 декабря 2011

У меня есть веб-приложение 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 через браузер.

Что мне не хватает?

1 Ответ

1 голос
/ 14 сентября 2012

У меня была похожая проблема, и последняя версия jquery разрешила ее.

...