这对我来说毫无意义,希望我能正确解释这一点。
我有一个使用 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 的图像。“返回”按钮在两个代码片段中都突出显示。