使用jQuery $ .post()将通用对象传递给MVC控制器

时间:2019-06-01 20:44:29

标签: javascript c# jquery asp.net-mvc .net-core

我有一个看起来像这样的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>

0 个答案:

没有答案