2

我有一个下拉列表。一旦用户更改其选择的值,页面就会重新加载。

html 看起来像这样:

<select id="period" name="MyViewModel.Period">
    <option selected="selected" value="/Home/11-2012/Index">November 2012</option>
    <option value="/Home/10-2012/Index">October 2012</option>
</select>

jquery 脚本如下所示:

<script type="text/javascript">
    $(document).ready(function () {
        $('select#period').change(function () {
            var temp = $(this).find('option:selected').val();
            document.location.href = temp;
        });
    });
</script>

一切都很好,但是如果用户在重新加载原始页面时使用浏览器的后退按钮,则它的选定值已更改。它肯定会让用户感到困惑。

那么,通过浏览器后退按钮导航到上一页时,是否可以避免更改下拉列表值?

PS:这个ASP.NET DropdownList autopostback 和 Browser Back Button看起来像一个类似的问题,但它没有答案,只有一个想法,使用 java 脚本重新分配值。但我没有明白如何......我希望关闭缓存不是唯一的出路。那我最好放弃使用下拉列表...

这是我原来的帖子,这让我想到了这个问题。

4

2 回答 2

1

一旦用户更改其选择的值,页面就会重新加载。

如果您可以使用 ajax 重新加载页面的内容,那么您将不会遇到此问题。

于 2012-10-23T10:15:05.980 回答
0

这是解决我的问题的解决方法。

我添加了一个链接,显示当前日期,并隐藏了下拉列表:

HTML:

<select id="period_s" name="_WorkerInfoViewModel.Period">
    <option value="url1">November 2012</option>
    <option selected="selected" value="url2">October 2012.</option>
</select>
<a id="period_a" data="url2">October 2012</a>

CSS:

select#period_s {
display:none;
}

a#period_a {
cursor:pointer;
}

然后我添加了一个 jquery 脚本来切换下拉列表并更改下拉列表中的选定值。选定值更改后,我再次隐藏列表:

<script type="text/javascript">
    $(document).ready(function () {
        $('select#period_s').change(function () {
            var temp = $(this).find('option:selected').val();                
            $(this).toggle();
            document.location.href = temp;
        });
        $('a#period_a').click(function () {
            $('select#period_s').val($(this).attr('data'));
            $('select#period_s').toggle();
        });
    });
</script>

在有人给出更好的解决方案之前,我会将其标记为答案。

于 2012-10-24T00:57:37.077 回答