【问题标题】:How to pass JSON string from Controller action to View and load as parameter for JQuery function如何将 JSON 字符串从 Controller 操作传递到 View 并作为 JQuery 函数的参数加载
【发布时间】:2014-01-07 14:43:38
【问题描述】:
$(document).ready(function () {

        function mapInit(data) {
            var map;

            alert(data);

            map = new L.Map('map', { zoom: 8, layers: [OSM] });

            var arr = $.parseJSON(data);
            alert(arr);
        }

        mapInit('@Html.Raw(Json.Encode(Model))');

    });

在控制器操作中,它返回一个手动构造的 json 字符串,我需要将其传递给 jQuery 函数中的视图以呈现地图。

但是,当字符串作为模型传递时,由于字符串不完整,它会丢失其格式。

【问题讨论】:

    标签: javascript jquery json asp.net-mvc-3


    【解决方案1】:

    指定视图以接受string 作为模型,然后将其传递到您的View() 结果中。例如

    @model String
    

    在视图顶部插入,然后:

    return View(tt);
    

    在行动中。

    然后,在视图中转储该字符串,以便 JavaScript 可以继续:

    @* ... *@
    mapInit('@Html.Raw(Model)')
    @* ... *@
    

    虽然您可能应该创建一个模型,将其填充到控制器中,将其交给视图,然后使用 Newtonsoft 的 JSON 库之类的东西并将其输出到页面。

    【讨论】:

    • Brad 我将行 return View(tt) 更改为 return View((object)tt) 因为它给出了错误。它仍然没有渲染地图。还有其他方法吗?
    • 查看渲染页面的来源——它看起来是否正确(语法上)?
    • Brad 我已经更改了上面的代码 - 这是因为之前的控制器操作没有正确格式化 JSON 字符串。因此我手动完成了它。但仍然没有渲染。 jquery 函数中的警报显示字符串不完整,因此未呈现。这一行 mapInit('@Html.Raw(Json.Encode(Model))');没有将 json 正确传递给函数
    • 你能用剃刀视图生成的答案更新你的答案吗? (只是mapInit(...) 部分)
    • @user2906420:我相信没有太多引用。尝试使用mapInit(@Html.Raw(Json.Encode(Model)));(如果剃须刀抱怨,请改用@Html.Raw("mapInit(" + Json.Encode(Model) + ")")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    相关资源
    最近更新 更多