Я делаю очень простой веб-сайт с меню слева и содержимым справа.
Например, CompanyController имеет следующее действие:
public IActionResult Index(int? page)
{
var pageNumber = page ?? 1;
var pageOfCompanies = companyService.ToPagedList(pageNumber, 10);
ViewBag.OnePageOfCompanies = (IPagedList)pageOfCompanies;
return PartialView("~/Views/Company/Index.cshtml");
}
Я пытаюсьзагрузить каждую опцию меню (действие контроллера) с помощью ajax.Я фиксирую событие click для каждого элемента и, когда функция ajax.get заканчивается, я обновляю содержимое и URL браузера.
<script type="text/javascript">
function getAjaxUrl(url, targetSelector) {
$.ajax({
type: "GET",
url: url,
dataType: "html",
cache: false,
success: function (data) {
//Refresh content
$(targetSelector).html(data);
//Update Navigation URL in browser
if (url != window.location) {
window.history.pushState({ path: url }, '', url);
}
//Reload events for new links
initialize();
}
});
}
function initialize() {
$('a').click(function (event) {
//If href != #
if (($(this).attr('href') != null || $(this).attr('href') != undefined) &&
$(this).attr('href').startsWith('/')) {
//Cancel navigation
event.preventDefault();
//Load content
getAjaxUrl($(this).attr('href'), "#content");
}
});
}
$(document).ready(function () {
$("a[class='dropdown-toggle']").click();
initialize();
});
</script>
Проблема заключается в том, что если я нажимаю F5 в браузере, когда я обновляюстраница, он возвращает только «PartialView», не загружая меню.
Кто-нибудь знает, как правильно сделать это?