【问题标题】:Consuming external JSON in Sencha Touch XTemplate在 Sencha Touch XTemplate 中使用外部 JSON
【发布时间】:2011-06-02 17:11:03
【问题描述】:

我的小型 asp.net mvc 应用程序按预期工作,但是我构建的 JSON 不正确。

这是我目前在 Sencha 中构建 JSON 对象以供消费的方式

        // note: this is using a RAZOR / C# foreach loop to build a JSON string
        var videosToShow = [
        @foreach (Web.Models.VideoListViewModel video in Model){
            @Html.Raw("{ id: " + @video.id + ",")
            @Html.Raw(" title: \"" + @video.title + "\" },")
        }
        ];

然后我有一个煎茶模板

        videoTpl = new Ext.XTemplate([
            '<tpl for=".">',
            '<div>',
            '<iframe src="http://player.vimeo.com/video/{id}?title=0&amp;byline=0&amp;portrait=0&amp;color=80ceff&amp;fullscreen=1" ',
            'width="' + screenWidth + '" ',
            'height="' + screenHeight + '" ',
            'frameborder="0">',
            '</iframe>',
            '&nbsp;&nbsp;{title}',
            '</div>',
            '</tpl>'
        ]);

还有一个视频面板

        videoPanel = new Ext.Panel({
            title: "Videos",
            tpl: videoTpl,
            iconCls: "tv",
            dockedItems: [{ xtype: "toolbar", title: "Videos"}],
            scroll: "vertical"
        });

和我的根 TabPanel

        rootPanel = new Ext.TabPanel({
            fullscreen: true,
            layout: 'card',
            region: 'center',
            items: [videoPanel, biblePanel, aboutPanel, helpPanel, morePanel],
            tabBar: { dock: 'bottom' }
        });

        videoPanel.update(videosToShow);

这里的底线是上面的工作正常。我只是不喜欢内部 JSON 字符串,我更愿意从 URL 发送 JSON。

这可能是我缺少的一些简单的东西,但任何影响都将不胜感激。

【问题讨论】:

    标签: asp.net-mvc json sencha-touch restful-url


    【解决方案1】:

    这样做:

    var videosToShow = @Html.Raw(Json.Encode(Model));
    

    当然,如果您的模型有很多属性,而您只需要 idtitle

    var videosToShow = @Html.Raw(Json.Encode(Model.Select(x => new { x.id, x.title })));
    

    它会更好/更容易/更短/更安全/避免意大利面条代码/没有循环/工作。

    编辑 在 cmets 中找到答案。

    【讨论】:

    • 但这仍然会在我的页面中删除 JSON,而不是从外部 url 消耗。
    • @rockinthesixstring,从外部 url 消费是什么意思?
    • 上面的代码直接在视图中从模型构建一个 JSON 字符串。我需要做的是构建一个从控制器发送 JSON 的服务,并以某种方式使用 $GetJSON 来填充模板。
    • @rockinthesixstring,在这种情况下,你不能简单地拥有一个控制器操作,而不是返回一个视图,而是 return Json(someModelInstance, JsonRequestBehavior.AllowGet);,然后用 $.getJSON() 使用它?
    • 是的。我已经让控制器返回 JSON。那不是问题。我只是有非常糟糕的JS排骨。我不知道如何将 JSON 存储在 videosToShow 变量中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多