Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
this.Request.IsAjaxRequest() в любом методе контроллера, заменяет все ваши магические действия по определению заголовка X-Requested-With[HttpGet]
public ViewResult About()
{
if (this.Request.IsAjaxRequest()) return PartialView("About");
return View("About");
}
public ViewResult About()
{
return PartialOrFullView("About");
}Html.PageInfo на Razor section было.public ViewResult About(int param1) {
var model = CreateAboutModel(param1);
return View(model);
}
public ViewResult AboutAjax(int param1) {
var model = CreateAboutModel(param1);
return View("About", model);
}
public AboutViewModel CreateAboutModel(int param1) {
return new AboutViewModel() {/*some calculations go here */}
}
protected override ViewResult View(IView view, object model)
{
if (Request.IsAjaxRequest)
{
return PartialView(view,model);
}
return base.View(view, model);
}for (int i = 0; i < 1000000000; i++)
{ }
if (!window.history.pushState) {
window.history.pushState = function () { }
}
if (!window.history.replaceState) {
window.history.replaceState = function () { }
}
protected ViewResultBase PartialOrFullView(string name = null, object model = null)
{
if (this.Request.IsAjaxRequest()) return PartialView(name, model);
return View(name, model);
} var url = VirtualPathUtility.ToAbsolute("~/"+
helper.ViewContext.RouteData.Route.GetVirtualPath(
helper.ViewContext.RequestContext,
helper.ViewContext.RouteData.Values).VirtualPath);
if (title == null) title = url;
Реализация одностраничного приложения средствами History API в ASP.NET MVC