У меня есть некоторая проблема с безгражданностью структуры .NET MVC.сохранить javascript состояние в .NET MVC
У меня есть некоторые HTML, как
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul>
<button id="btnShowMore">Show More</button>
<a href="www.google.com">Google</a>
и мой Javascript идет как
var maxDisplay = 5;
var unit = 5;
$("li").slice(maxDisplay).hide();
if ($("li").length <= maxDisplay) $('#btnShowMore').hide();
$('#btnShowMore').click(function() {
maxDisplay += unit;
$("li").slice(0, maxDisplay - 1).show();
if ($("li").length <= maxDisplay) $('#btnShowMore').hide();
});
Теперь, если я расширяю свой список, перейдите к Google, и нажмите кнопку назад в моем браузере, список будет забыть, что я сделал, и показывает только первые 5 элементов списка, чего я не хочу.
Я думал о некоторых вариантах:
печенья. не совсем то, что я хочу, потому что таких страниц много, и мне нужен куки-файл для каждого из них.
немного манипулировать URL-адресом, например, воспользоваться окном.location.hash. также не хорошо, потому что это будет другая страница
Есть ли какой-нибудь обычный способ сделать это?
Заранее спасибо
UPDATE:
кажется, что нет больше решений не выходит. Я определенно предпочел бы localStorage над cookie, так как нет необходимости передавать эту переменную между клиентом и сервером, но необходимо проверить, является ли страница первой загрузкой (очистить кешированную переменную и показать 5 элементов) или загрузить с навигационной системы обратно (чтение кеша и show cached количество элементов).
может быть, я должен идти с хэш ...
Почему хэш не хорошо? Это отличный способ сохранить состояние. –
HTML сам по себе является апатридом, а не .NET mvc в частности. Когда вы нажимаете «назад» в своем браузере, как правило, любой контент повторно запрашивается и повторно отображается. Как сказал Рон, вы всегда можете сохранить состояние в своем хэштеге, которое создаст «новый» URL-адрес и войдет в историю браутера.На загрузке страницы вы должны проверить, является ли ваш хэш определенным значением, и выполнить соответствующий скрипт. –
. Тогда у вас есть проблема с ** самим HTTP ** ... – jondavidjohn