这对我来说毫无意义,希望我能解释清楚。
我有一个使用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>
最后,Here's显示正确和错误输出的图像以及呈现的HTML。 “后退”按钮在两个代码段中都突出显示。
答案 0 :(得分:1)
因此修复是在登录屏幕中添加 data_ajax =“false”正在调用的HTML.BeginForm()方法,以及帐户页面的操作链接。虽然这是“答案”,但它让我比以往更加困惑。任何人都可以解释为什么这解决了我的问题?我是否需要将此添加到所有操作链接?我很乐意接受能够告诉我原因的人的回答。