【问题标题】:Create a Json object from a list in C# controller从 C# 控制器中的列表创建 Json 对象
【发布时间】:2019-05-18 18:38:06
【问题描述】:

一段时间以来,我一直试图从 Controller MVC c# 中获取基于字符串列表定义的 Json 数据,但没有成功。我想我错过了一些愚蠢的东西,但你能在这里指导我吗?

我有一个控制器函数返回一个 Viewbag 分配如下:

   List<string> Brands;
        Brands = GlobalVariables.Brands.Where(m => m.brand_cd != "OOO" && m.brand_cd.Trim().ToLower().Equals(m.main_brand.Trim().ToLower()))
                 .OrderBy(m => m.brand_cd).Select(m => m.brand_cd.Trim()).Distinct().ToList();



        ViewBag.BrandList = Json(Brands); 

在我看来,我正在尝试将 Json 变量定义为

<script>
    var brandList = '@ViewBag.BrandList';
</script>

但这没有帮助。我在结果中得到一个字符串。有什么想法吗?

【问题讨论】:

  • 您的实际问题是什么?为什么要这样做?
  • '我在结果中得到一个字符串' - 你认为JSON 到底是什么?
  • 首先删除使其成为字符串的'。您可能还需要使用Html.Raw - var brandList = @Html.Raw(ViewBag.BrandList);
  • 谢谢你们,我们的一位成员让我这样做,它就像魔术一样工作。我没有在视图文件中正确渲染它。 var brandList = @Html.Raw(Json.Encode(ViewBag.BrandList));

标签: c# jquery json model-view-controller


【解决方案1】:

您正在分配一个 JsonResult 对象并期望得到一个 JSON 字符串,但事实并非如此。

要将实际的 JSON 放入 ViewBag,您需要序列化您的对象并将其放入 ViewBag。

以使用相当标准的 Newtonsoft.Json NuGet 包为例:

string myJsonString = JsonConvert.SerializeObject(Brands);
ViewBag.BrandList = myJsonString;

在视图中:

<script>
    var brandList = @ViewBag.BrandList;
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多