gpt4 book ai didi

c# - 如何在 MVC 的局部 View 上返回 json?

转载 作者:太空狗 更新时间:2023-10-29 21:55:03 25 4
gpt4 key购买 nike

我有以下代码:

[HttpPost]
public JsonResult Index2(FormCollection fc)
{
var goalcardWithPlannedDate = repository.GetUserGoalCardWithPlannedDate();
return Json(goalcardWithPlannedDate.Select(x => new GoalCardViewModel(x)));
}

但我想在局部 View 上使用它,我该怎么做?

最佳答案

如果我正确理解你需要什么,你可以试试下面的方法

public JsonResult Index2(FormCollection fc)
{
var goalcardWithPlannedDate = repository.GetUserGoalCardWithPlannedDate();
return Json(goalcardWithPlannedDate.Select(x => new GoalCardViewModel(x)), "text/html", JsonRequestBehavior.AllowGet);
}

设置 c 内容类型很重要,因为如果您使用 Html.RenderAction 调用此操作,JsonResult 将覆盖整个响应的内容类型。这不是一个好的解决方案,但它在某些情况下有效。

您也可以尝试更好的解决方案:

var scriptSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var jsonString = scriptSerializer.Serialize(goalcardWithPlannedDate.Select(x => new GoalCardViewModel(x)));

然后你可以用字符串表示做任何你想做的事。它实际上是 JsonResult 在其中执行的操作。顺便说一句,您可以在此处使用任何 json 序列化程序并取得同样的成功。

如果你想在客户端访问它。您无需更改代码。如果使用 jQuery:

$.post('<%= Url.Action("Index2") %>', { /* your data */ }, function(json) { /* actions with json */ }, 'json')

如果你想将它传递给你的 View 模型,那么:

[HttpPost]
public ActionResult Index2(FormCollection fc)
{
var goalcardWithPlannedDate = repository.GetUserGoalCardWithPlannedDate();
return PartialView(new MyModel { Data = goalcardWithPlannedDate.Select(x => new GoalCardViewModel(x)) });
}

关于c# - 如何在 MVC 的局部 View 上返回 json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10782220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com