web-parts - 如何在门户设计模式下从 Kentico 中继器输出原始 JSON 页面
问题描述
在门户模式下,如何使页面仅输出其转发器 Web 部件的数据,而无需页面包装器 asp.net 表单等?
我已将页面模板继承设置为无,未选中标题继承,但无济于事,我仍在获取主题元素、asp.net 表单、html 标记头、正文和规范。我希望摆脱所有这些外围 html 元素,只保留原始 JSON 的转发器输出。
我想要实现的是使用转发器 Web 部件将原始 JSON 输出到页面,同时将转发器保留在 CMS 设计 UI 中,便于管理员管理。RAW JSON 将由 JQuery.get(..) 或等效项拾取,以照常读取 JSON 并解析它。
我已经尝试在同一页面上将 Kentico 自定义响应 Web 部件与中继器结合起来,但自定义响应当然会吹走任何其他页面输出。
如有必要,我愿意使用 ASPX + Portal 模板组合模式,但希望继续在设计界面中使用 Kentico Web 部件来生成数据。
我在 DevNet 上找到了一个自定义响应中继器 Web 部件,但我更愿意自己管理设计模式,因为我可能想在其中添加一些额外的 Web 部件。
最终,如果它不可行或涉及太多复杂性,我将使用一个好的旧 ASP.NET ASHX 处理程序从 Kentico API 生成我需要的东西,并完全排除 Kentico 设计模式。
谢谢。
解决方案
您有什么理由不想使用现有的 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
推荐阅读
- c - 如何使用scanf函数获取字符串长度
- react-native - 从 useSelector 获取相关值
- powershell - 在powershell中将行与字符串变量进行比较
- swift - 如何快速向 UIViewController 添加左右栏按钮
- sql - 使用 sql 查询文本字符串 - 如何按类别查找单词序列
- tableau-api - 在 Tableau 中连接来自 2 个字符串维度的数据
- reporting-services - SSRS:将计算的行放在另一行下方
- javascript - 您如何确定 gatsbyjs 中页面之间的父子关系?
- kubernetes - kubernetes pod 动态命令行
- php - 在数组中搜索多个序列