Я использую .scrollTop, как показано ниже, очень просто, он работает даже с несколькими формами в представлении (у меня очень длинное представление, разбитое на несколько форм):
Сначала поместите это свойство внутри модели:
public string scrollTop { get; set; }
И в виде, внутри формы # 1:
@Html.HiddenFor(m => m.scrollTop, new {@id="ScrollForm1"})
внутри формы № 2:
@Html.HiddenFor(m => m.scrollTop, new {@id="ScrollForm2"})
внутри формы № 2:
@Html.HiddenFor(m => m.scrollTop, new {@id="ScrollForm3"})
, а затем в нижней части экрана:
$(document).ready(function () {
$(document).scrollTop(@Model.scrollTop);
$(document).scroll(function () {
$("#ScrollForm1").val($(document).scrollTop());
$("#ScrollForm2").val($(document).scrollTop());
$("#ScrollForm3").val($(document).scrollTop());
});
});
Ваша позиция прокрутки всегда сохраняется при обратной передаче, поскольку поля @ Html.HiddenFor хранят вашу текущую прокрутку и передают ее модели на пост. И затем, когда страница появляется, она получает значение scrollTop из модели. В конце ваша страница будет вести себя как веб-форма, все останется нетронутым.