在 SharePoint 中从 JavaScript 调用 C# 代码
Calling C# code from JavaScript in SharePoint
好的,这就是我要做的。
我有此自定义操作(我的 SharePoint 功能区上的按钮)。这应该调用Javascript,而Javascript又应该调用C#代码。
我有以下几点:
<CustomAction
Id="Ribbon.Documents.DocsetZip"
Title="Download Document Set as ZIP"
RegistrationType="ContentType"
RegistrationId="0x0120D520"
Location="CommandUI.Ribbon"
>
<CommandUIExtension>
<CommandUIDefinitions>
<CommandUIDefinition
Location="Ribbon.Documents.Share.Controls._children">
<Button Id="Ribbon.Document.Share.DownasZip"
Sequence="20"
Command="Ribbon.ManageDocumentSet.MDS.Manage.DownZip"
Alt="Download as ZIP"
Image16by16="/_layouts/images/zipfile16x.png"
Image32by32="/_layouts/images/zipfile32x.png"
LabelText="Download as ZIP file"
ToolTipTitle="Download as ZIP file"
ToolTipDescription="Compress the document set and download"
TemplateAlias="o1"/>
</CommandUIDefinition>
</CommandUIDefinitions>
<CommandUIHandlers>
<CommandUIHandler
Command="Ribbon.ManageDocumentSet.MDS.Manage.DownZip"
CommandAction="javascript:__doPostBack('DownloadZipDelegateEvent', '')" />
</CommandUIHandlers>
</CommandUIExtension>
我有一个班级:
public class MyRibbonDelegateClass : WebControl
{
protected override void OnLoad(EventArgs e)
{
this.EnsureChildControls();
base.OnLoad(e);
if (this.Page.Request["__EVENTTARGET"] == "DownloadZipDelegateEvent")
{
using (TextWriter writer = File.CreateText("C:''temp''perl.txt"))
{
//
// Write one line.
//
writer.WriteLine("First line");
//
// Write two strings.
//
writer.Write("A ");
writer.Write("B ");
//
// Write the default newline.
//
writer.Write(writer.NewLine);
}
}
}
似乎我的代码被执行了,但我在任何地方都找不到我的文件。我错过了什么?
您可以使用__DoPostback来调用来自JavaScript的服务器端命中。
<script type="text/javascript">
function ServerPostWithParameter(parameter)
{
__doPostBack('btnSave', parameter)
}
</script>
在服务器端,
public void Page_Load(object sender, EventArgs e)
{
string parameter = Request["__EVENTARGUMENT"]; // this is your parameters
// Request["__EVENTTARGET"]; // this is your button
}
您可以使用服务器端代码创建一个 HttpHandler,并使用 JavaScript 中的参数调用它。
例如,创建一个 ~sitecollection/_layouts/15/MyCustomHandler.ashx 并从 JavaScript 调用它,如下所示(SharePoint 2013 使用布局目录的虚拟路径作为 '_layouts/15',SharePoint 2010 - 只是'_layouts'):
$.get(_spPageContextInfo.siteServerRelativeUrl + '/_layouts/15/MyCustomHandler.ashx?Param1=Value1&Param2=Value2');
我已经解决了如下:
function getOutlook() {
var xmlHttpReq = createXMLHttpRequest();
xmlHttpReq.open("GET", _spPageContextInfo.siteServerRelativeUrl + "/_layouts/SendDocuments/MyCustomHandler.ashx?ItemsArray=" + fileRefArray, false);
xmlHttpReq.send(null);
}
function createXMLHttpRequest() {
try { return new XMLHttpRequest(); } catch (e) { }
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { }
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { }
alert("XMLHttpRequest not supported");
return null;
}
相关文章:
- 如何使用Javascript或jQuery代码调用mousemove
- 反汇编的javascript jit代码调用未知函数
- 从node.js代码调用javascript代码
- 如何使用javascript代码调用服务器端函数;标记函数“>
- 从本机 java 代码调用 JS 事件
- 如何从本机 Java 代码调用 JS
- 如何将 JavaScript 文件(.js 文件)添加到 C# 项目并从 C# 代码调用 JavaScript 方法
- Javascript 生成的 HTML 代码调用 KNOCKOUT
- 检测用户触发的 jquery 事件或代码调用
- 使用 jquery 从动态添加的 html 代码调用函数
- Metro Style App:如何从 Web 视图控件中运行的 JavaScript 代码调用 C# 方法
- 如何从 JavaScript 代码调用 StorageProcedure
- 从 C# Web 应用程序背后的代码调用 JavaScript 函数
- 如何通过 JavaScript 代码调用 C# Web 服务
- 从遗留代码调用 AngularJS
- Javascript 函数不是从按钮单击背后的代码调用的
- AJAX:如何从 AJAX 方法背后的 C# 代码调用 javascript 函数
- 如何防止恶意代码调用我的 JavaScript
- 从VB.NET背后的代码调用单击事件或JQuery函数
- 从服务器端代码调用弹出窗口