Asp.net-Core-2.0
如何從 Core 2 RazorPage ViewModel 處理程序返回 PartialView
在 Asp.Net MVC 中,您可以通過執行以下操作輕鬆返回局部視圖:
return PartialView("ModelName", Model);這是如何在 RazorPage ViewModel 處理程序上完成的?
我想通了。它不像在 MVC 中那樣直接。您必須創建一個空
ViewDataDictionary()模型,然後將其 Model 屬性設置為部分填充模型。查看模型/處理程序
public async Task<IActionResult> OnGetAsyncUpdateSearchResults(DateTime startDate, DateTime endDate, string selectedTypes) { int[] types = selectedTypes.Split(",").Select(x => int.Parse(x)).ToArray(); var inventory = await _itemService.GetFiltered(types, null, null, null, null, null, null, startDate, endDate.ToUniversalTime(), null, null, null, null, null, null, null); if (inventory != null) { SearchResultsGridPartialModel = new SearchResultsGridPartialModel(); SearchResultsGridPartialModel.TotalCount = inventory.TotalCount; SearchResultsGridPartialModel.TotalPages = inventory.TotalPages; SearchResultsGridPartialModel.PageNumber = inventory.PageNumber; SearchResultsGridPartialModel.Items = inventory.Items; } var myViewData = new ViewDataDictionary(new Microsoft.AspNetCore.Mvc.ModelBinding.EmptyModelMetadataProvider(), new Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary()) { { "SearchResultsGridPartialModel", SearchResultsGridPartialModel } }; myViewData.Model = SearchResultsGridPartialModel; PartialViewResult result = new PartialViewResult() { ViewName = "SearchResultsGridPartial", ViewData = myViewData, }; return result; }我現在可以通過 ajax GET 呼叫這個處理程序並讓它返回部分的 HTML。然後我可以
div按預期設置部分和部分刷新。這是我正在進行的 AJAX 呼叫:
var jsonData = { "startDate": startDate, "endDate": endDate, "selectedTypes": selectedTypesAsString }; $.ajax({ type: 'GET', url: "searchresults/?handler=AsyncUpdateSearchResults", beforeSend: function (xhr) { xhr.setRequestHeader("XSRF-TOKEN", $('input:hidden[name="__RequestVerificationToken"]').val()); }, contentType: 'application/json; charset=utf-8"', data: jsonData, success: function (result) { $("#searchResultsGrid").html(result); }, error: function (error) { console.log(error); } });