ASP.Net将两个页面一起呈现

时间:2013-04-09 21:01:24

标签: asp.net jquery-mobile asp.net-mvc-4

这对我来说毫无意义,希望我能解释清楚。

我有一个使用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。 “后退”按钮在两个代码段中都突出显示。

1 个答案:

答案 0 :(得分:1)

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