0

这对我来说毫无意义,希望我能正确解释这一点。

我有一个使用 Asp.Net MVC 4 的基本 jQuery Mobile 应用程序。登录到应用程序后,如果我单击左上角的帐户按钮,页面会加载,但缺少主题。如果我然后单击刷新,一切看起来都很好。

我在 Chrome 的 F12 窗口中比较了生成的 HTML。第二页当然是正确的。第一个页面包含所有相同的 HTML,但是,在正文的开头放置了一个额外的 div。此 div 向我的应用程序显示主应用程序页面。它具有“页面”的数据角色,并且从视图中隐藏。我只能假设 jQuery Mobile 仅将主题应用于它找到的第一个数据角色“页面”,因此跳过了正确的页面。

为什么我在单击帐户时与单击帐户时单击刷新时会得到不同的页面?

[编辑] - 两个人要求提供代码。我对 Asp 和 jQuery Mobile 非常陌生,并认为这可能是一个简单的 pebkac 错误,有人会指出。代码如下:

这是 Index.cshtml

@model TimeCard.Models.LoginModel

@{
   ViewBag.Title = "Your Account";
}

@section Header {
   @Html.ActionLink("Back", "Index", "Home", null, new { data_icon = "arrow-l", data_rel = "back", data_iconpos = "left" })
   <h1>@ViewBag.Title</h1>
}

<ul data-role="listview" data-inset="true">
   <li>@Html.ActionLink("Log off", "LogOff")</li>
</ul>

这是共享布局:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="utf-8" />
   <title>@ViewBag.Title</title>
   <meta name="viewport" content="width=device-width" />
   <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
   @Styles.Render("~/Content/mobileCss", "~/Content/css")
   @Scripts.Render("~/bundles/modernizr")
</head>
<body>
   <div data-role="page" data-theme="b">
      <div data-role="header">
         @if (IsSectionDefined("Header")) {
            @RenderSection("Header")
         }
         else {
            <h1>@ViewBag.Title</h1>
            @Html.Partial("_LoginPartial")
         }
      </div>
      <div data-role="content">
         @RenderBody()
      </div>
   </div>
   @Scripts.Render("~/bundles/jquery", "~/bundles/jquerymobile")
   @RenderSection("scripts", required: false)
</body>
</html>

最后,这是一张显示正确和错误输出以及呈现的 HTML 的图像。“返回”按钮在两个代码片段中都突出显示。

4

1 回答 1

1

所以解决方法是添加data_ajax = "false"在登录屏幕中调用的 HTML.BeginForm() 方法,以及帐户页面的操作链接。尽管这是“答案”,但它让我比以往任何时候都更加困惑。谁能解释为什么这可以解决我的问题?我是否需要将此添加到所有操作链接?我很乐意接受可以告诉我为什么会这样的人的回答。

于 2013-04-10T15:29:26.053 回答