Поскольку браузер не отправляет хэш на сервер по умолчанию, единственный способ сделать это - использовать Javascript:
Когда форма отправляется, возьмите хеш (window.location.hash) и сохраните его в скрытом поле ввода на стороне сервера. Поместите его в DIV с идентификатором «urlhash», чтобы мы могли его легко найти. позже.
На сервере вы можете использовать это значение, если вам нужно что-то с ним сделать. Вы даже можете изменить его, если вам нужно.
На странице загрузки на клиенте , проверьте значение этого скрытого поля. Вы захотите найти его по DIV, в котором он содержится, поскольку автоматически сгенерированный идентификатор не будет известен. Да, вы могли бы сделать здесь некоторые хитрости с .ClientID, но мы обнаружили, что проще просто использовать оболочку DIV, поскольку она позволяет всему этому Javascript жить во внешнем файле и использоваться в общем виде.
Если скрытое поле ввода имеет допустимое значение, установите его в качестве хэша URL-адреса (снова window.locaion.hash) и / или выполните другие действия.
Мы использовали jQuery, чтобы упростить выбор поля и т. Д. ... в итоге получилось несколько вызовов jQuery, один для сохранения значения, а другой для его восстановления.
Перед отправкой:
$("form").submit(function() {
$("input", "#urlhash").val(window.location.hash);
});
На странице загрузки:
var hashVal = $("input", "#urlhash").val();
if (IsHashValid(hashVal)) {
window.location.hash = hashVal;
}
IsHashValid () может проверять наличие «неопределенных» или других вещей, которые вы не хотите обрабатывать.
Кроме того, убедитесь, что вы используете $ (document) .ready (), соответственно.