0

我开始构建一个将存在于某些 SharePoint 2007 PageLayouts 上的 UserControl。UserControl 的目的是根据页面名称显示多个位置的地图。因此,它需要做的是获取页面名称,查询 SharePoint 列表以获取相关的地理坐标集合,然后将它们加载到地图上。除了元素的简单修改和学术 jquery AJAX 调用之外,我从来没有真正做过很多客户端脚本。所以我试图了解传递数据的常见做法。

我在网上看到很多关于 AJAX 调用页面方法的东西,因为这是一个用户控件,所以它已经过时了。另一种方法看起来是对 Web 服务的 ajax 调用。我以前构建过 Web 服务,但供 .NET 客户端使用。这仍然是您设置要由脚本调用的 .net Web 服务的方式吗?安全呢?如果我只希望我的页面或我的站点调用 Web 服务而不是公众怎么办?

在这种情况下,我什至不确定是否需要服务。我可以在初始请求期间检索数据并将其放在页面上吗?像json这样的东西在后面的代码中序列化坐标集合并将其写入隐藏字段以供javascript提取?

4

2 回答 2

0

有几种方法可以将值从用户控件传递到 javascript。

脚本控制:

允许您为 Web 控件包含客户端行为。请参阅下面的一些链接:
创建脚本控件
ASP.NET:使用 ScriptControl 基类创建 AJAX 服务器控件
Asp.Net Ajax ScriptControl 教程

RegisterStartupScript 和 RegisterClientScriptBlock:

允许您在页面上包含客户端脚本块。请参阅下面的一些链接:
使用客户 端脚本从 ASP.NET 服务器控件注入客户端脚本

HtmlGenericControl:

没有什么能阻止您动态地创建脚本标记并将所有 javascript 逻辑插入到InnerHtml属性中。它可以在初始请求期间完成。

例子:

HtmlGenericControl script = new HtmlGenericControl("script");
script.ID = "script";
script.Attributes.Add("type", "text/javascript");
script.InnerHtml = "alert('Hey');";

//Insert the script into some asp:Panel
panel.Controls.Add(script);
于 2013-02-14T21:29:01.463 回答
0

四年后读到这篇文章,我可以告诉过去的自己:

  1. 是的,只需在页面上包含 json,隐藏以供 JS 拾取。但请注意,这会增加必须由客户端浏览器下载的响应的大小。这不仅需要更多时间,而且会消耗更多移动用户的昂贵数据。如果有很多数据并且有些数据可能不会被使用,那么根据需要从 Web 服务中检索数据可能是一个更好的选择。

  2. REST 服务是响应 AJAX 请求的常用解决方案。如果您想允许来自匿名用户的客户端脚本获取数据,那么您无法保护匿名用户的数据。

于 2017-01-31T18:52:48.177 回答