我有一个看起来像这样的ViewComponent:
public IViewComponentResult Invoke(bool isNew) { ... }
和引用它的控制器是这样的:
public IActionResult RefreshViewComponent()
{
return ViewComponent("Buyer", new {IsNew = true});
}
我正在尝试更改RefreshViewComponent
,以使其改用AJAX调用中的参数:
[HttpPost]
public IActionResult RefreshViewComponent(RefreshViewComponentRequest request)
{
return ViewComponent(request.Name, request.Args);
}
public class RefreshViewComponentRequest
{
public string Name { get; set; }
public object Args { get; set; }
}
但是,我无法使用此(简化的)JS / jQuery来填充Args
:
const name = "Buyer";
const args = { IsNew: true };
const data = { name, args };
$.post("/Order/RefreshViewComponent", data);
它在我的Args = null
中显示了RefreshViewComponentRequest
。
我也尝试过将其作为字符串传递并反序列化:
//...
const args = JSON.stringify( { IsNew: true } );
//...
$.post("/Order/RefreshViewComponent", data);
return ViewComponent(request.Name, JsonConvert.DeserializeObject(request.Args));
它将参数显示为{{"IsNew": true}}
,但是在传递给BuyerViewComponent
时将忽略该参数。
如何通过ViewComponent()
将对象作为参数传递给控制器?
注意:我已经重写了这个问题,以简化/缩短它,但是如果您愿意,可以查看以前的修订以获取更多详细信息。 < / p>