1

使用 jquery mobile 刷新时,Raty 星级评分会消失。

编码:

布局:

<body>
  <div data-role="page">

    <div data-role="header" data-position="fixed" style="height:12px"></div>

    <div class="ui-content" role="main">@RenderBody()</div>

    <div data-role="footer" data-position="fixed" style="text-align:center;"></div>
  </div>
</body>

投票页面:

@{
    Layout = "~/Views/Shared/_Layout.Mobile.cshtml";
}
<script>
  $('#star').raty({
    number: 5,
    path: '/Images',
    size: 24,
    width: 150,
    click: function (score)
    {
        $("#Valor").val(score);
    }
 });
</script>

@using (Html.BeginForm("AvaliarOrador", "Mobile", FormMethod.Post, new { @id = "frmAvaliarOrador" }))
{
    <input type="hidden" id="Valor" name="Valor" />
    <div id="star" style="padding-top: 20px; padding-bottom: 10px; margin-left: auto; margin-right: auto; cursor: pointer; width: 170px"></div>
}

如果我刷新页面,星星就会消失,我必须再次返回主页,刷新并重新开始。

4

1 回答 1

1

据我所知,这不是 ASP.NET 问题,很可能是 jQuery Mobile 问题。

要理解这个问题,您需要了解 jQuery Mobile 如何处理页面和 JavaScript。它使用 AJAX 将页面加载到 DOM 中。

第一页正常加载。它的 HEAD 和 BODY 被加载到 DOM 中。该内容将保留在那里(除非刷新页面)以等待进一步的内容加载。加载第二个页面时,只有它的 BODY 内容被加载到 DOM 中,当我说它的 BODY 内容时,我指的是带有属性 data-role=”page” 的 DIV 及其内部内容。

这听起来可能没什么问题,但你应该三思而后行。如果我们有几个 HTML 页面,并且每个页面都有一些独特的东西,假设只在该页面执行期间使用不同的 JavaScript,更不用说额外的 CSS 文件了。在这些文件的 HEAD 中找到的所有内容都将被丢弃,并且其 JavaScript 不会被执行。刷新页面时也是如此。

在此处阅读更多信息+ 解决方案。

于 2014-05-19T08:40:23.687 回答