具有不同局部视图的浏览器历史记录最佳实践

时间:2018-07-03 08:18:15

标签: ajax asp.net-mvc partial-views browser-history

我的情况是我的控制器动作根据参数返回不同的局部视图。 控制器动作类似于

 [HttpGet]
    public ActionResult List(int? page, string currentFilter, string searchString, EnumDocSort DocSort = EnumDocSort.DocIDesc, int id = 1)
    {
        if (searchString != null)
        {
            page = 1;
        }
        else
        {
            searchString = currentFilter;
        }

        DashboardListViewModel model = new DashboardListViewModel() { SearchString = searchString, SortOrder = DocSort, Page = page }; 
        var docs = DocServiceImpl.GetDocsForCurrentUser();

        docs = GetDocs(docs, model);

        int pageNumber = (model.Page ?? 1);

        ViewBag.ControllerName = "ClientDashboard";

        model.PagedList = docs.ToPagedList(pageNumber, model.PageSize);

        if(id==0)
        {
            return PartialView("List", model);
        }
        else if (Request.IsAjaxRequest())
        {
            return PartialView("Docs", model);
        }
        else
        {
            return View(model);
        }
    }

在上面的示例中,DocsList部分视图的一部分。

 <div class="result" id="result">
     @Html.Partial("Docs", Model)
 </div>

上面的代码是List.cshtml的一部分。 设置搜索过滤器时,我必须返回Docs视图。 问题出在浏览器历史记录中。因为一切都是由ajax制作的,所以我使用      history.pushState(stateObj,title,url);

但是在某些情况下,当我单击“在浏览器中返回”时,它将返回Docs部分视图,但是我需要返回“更大”的视图,即List.cstml。 我想知道使用浏览器历史记录时使用部分视图的最佳做法是什么?

0 个答案:

没有答案