在Portal中,如何使页面只输出其Repeater web部件的数据,而不使用页面包装器asp.net表单等?
我已经将页面模板继承设置为none,未经检查的头继承,但是没有效果,仍然得到主题元素、asp.net表单、html标记头、正文和规范。我希望摆脱所有这些外围的html元素,只保留中继器输出,这是原始的JSON。
我试图实现的是使用Repeater Web部件将原始JSON输出到页面,同时将Repeater保存在CMS Design中,在那里易于被管理员管理。原始的JSON将由JQuery.get(..)获取。或者等同于像往常一样读取JSON并解析它。
我尝试将部件与同一页面上的Repeater结合起来,但是自定义响应当然会破坏任何其他页面的输出。
如果需要,我愿意使用ASPX + Portal模板组合模式,但希望继续使用设计界面中的Kentico部件来生成数据。
然而,我发现一个基于DevNet的自定义响应重传web部件更愿意自己管理设计模式,因为我可能想在其中添加一些额外的web部件。
最终,如果它不能完成,或者涉及到太多的复杂性,我将使用一个好的ASP.NET ASP.NET从Kentico中产生我需要的东西,并将Kentico模式完全排除在公式之外。
谢谢。
发布于 2018-05-14 13:11:41
在Kentico上有一个定制的web部件,它允许您告诉页面您想要的输出类型,它称为Web部件到API转换器。下载该web部件,导入它并将其添加到页面模板中。一定要更改页面模板,这样它就不会继承任何其他页面或模板。
然后,将Web部件与API转换器web部件关联到清单web部件,这就像魔术(或基本编码)一样,它将aspx页面转换为您指定的任何输出的“原始”格式。
发布于 2018-05-12 03:44:53
是否有任何理由不想使用现有的web服务/CMSPages/WebService.asmx?您可以创建自己的方法并在那里返回json:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void GetMyData(string parameter = "")
{
// Get your data
DataTable myData = CustomTableItemProvider.GetItems("customtable.sampletable").Result.Tables[0];
// return JSON
string JSONString = Newtonsoft.Json.JsonConvert.SerializeObject(myData);
this.Context.Response.ContentType = "application/json; charset=utf-8";
this.Context.Response.Write(JSONString);
}但是我建议用Web API来做
https://stackoverflow.com/questions/50301275
复制相似问题