我的小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 + "\" },")
}
];
然后我有一个Sencha模板
videoTpl = new Ext.XTemplate([
'<tpl for=".">',
'<div>',
'<iframe src="http://player.vimeo.com/video/{id}?title=0&byline=0&portrait=0&color=80ceff&fullscreen=1" ',
'width="' + screenWidth + '" ',
'height="' + screenHeight + '" ',
'frameborder="0">',
'</iframe>',
' {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。
这可能是我想念的简单事,但任何影响都会受到高度赞赏。
答案 0 :(得分:0)
这样做:
var videosToShow = @Html.Raw(Json.Encode(Model));
当然,如果您的模型有许多属性,而您只想id
和title
:
var videosToShow = @Html.Raw(Json.Encode(Model.Select(x => new { x.id, x.title })));
它会更好/更容易/更短/更安全/避免意大利面条代码/无循环/工作。
修改强> 答案中的答案。