返回带对象或 ViewBag 的 PartialView

Returning PartialView with object or ViewBag

我正在开发一个应用程序,我可以像这样 Ajax 调用控制器:

 $.ajax({
            url: '@Url.Action("Test", "Test")',
            async: true,
            type: 'POST',
            dataType: "html",
            data: {
                param1                : paramVal,
            },
            success: function (data) {
                debugger;
                $('#Partial').html(data).show(); //I have a div with this ID to render the PartialView

            }
        });

和我的控制器方法

public async Task<ActionResult> Test (string param){

      //doing some processing and returning a List of Datatables

      var newList = new List<DataTable>(); //gets populated with some data

      return PartialView("_Partial",newList); 
}

所以这工作得很好。我的 Ajax 调用有效,我将 newList 传递给 _Partial,一切正常。

我想要完成的是:我不想 returning newList 到 Ajax 调用,我想 return 一个对象,所以我可能想做类似的事情:

 var newList = new List<DataTable>(); //gets populated with some data
 bool test = false;


 return PartialView("_Partial",new {List = newList, BooleanTest = test}); 

并在 Ajax 成功时,我想同时访问 ListBooleanTest

success: function (data) {
     debugger;
     alert(data.BooleanTest);
     $('#Partial').html(data.List).show(); //I have a div with this ID to render the PartialView

我知道我可以用 JsonResult 做到这一点(return 一个对象),但似乎不能用 PartialView

有什么方法可以 return PartialView with Object?

我会尝试创建一个 ViewModel,它有一个 List 和一个 Bool,您可以在其中将它们填充到 ActionResult 中,然后将 ViewModel 传递给 PartialView。 在 PartialView 中,您可以访问 List 和 Bool。

return我会这样写:

return PartialView(nameof(_Partial), ViewModel);