5

我在我的 SharePoint 功能区中创建了一个自定义操作按钮,现在我尝试从该按钮调用一些 C# 代码。我无法找到有关如何执行此操作的任何详细信息。有谁知道如何做到这一点或有任何关于如何做到这一点的好信息?不确定它会有所帮助,但这是我的自定义操作按钮的代码。谢谢!

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

  <CustomAction

    Id="CustomRibbonButton"
    RegistrationId="101"
    RegistrationType="List"
    Location="CommandUI.Ribbon"
    Sequence="5"
    Title="Move Documents">

    <CommandUIExtension>
      <CommandUIDefinitions>
        <CommandUIDefinition Location="Ribbon.Documents.Manage.Controls._children">
          <Button
              Id="Ribbon.Documents.New.MoveButton"
              Alt="Move Documents"
              Sequence="5"
              Command="Move_Button"
              Image32by32="/_layouts/images/Skynet/WinEarth32x32.png"
              Image16by16="/_layouts/images/Skynet/WinEarth16x16.png"
              LabelText="Move Documents"
              TemplateAlias="o1" />
        </CommandUIDefinition>
      </CommandUIDefinitions>

      <CommandUIHandlers>
        <CommandUIHandler
          Command="Move_Button"
          CommandAction="javascript:alert('SharePoint 2010 makes me angry!');" />
      </CommandUIHandlers>

    </CommandUIExtension>
  </CustomAction>

</Elements>
4

2 回答 2

1

CommandUIHandler 可以执行 JavaScript(包括客户端对象模型),但如果您想执行服务器对象模型代码,您可以使用Andrew Connell 的这篇 MSDN 文章中描述的回发机制。他创建了一个 Web 部件,用于侦听由功能区按钮生成的回发事件。

或者,您可以实现一个 Web 服务并从您的 JavaScript CommandUIHandler(ajax 调用)中调用它。此处使用该方法。(不再访问 2016-02-01)

于 2013-01-22T12:50:23.243 回答
0

我不确定它是否会对您有所帮助,但是当我做了一些功能区工作时,我使用了来自http://quickdeploydoc.codeplex.com项目的代码。我将用户发送到一个页面,然后将他们带回来。希望能帮助到你。

  <CustomAction Id="8CC3766E-1429-498c-9EEA-B2DFA784C360"
                RegistrationType="ContentType"
                RegistrationId="0x0101"
                Location="EditControlBlock"
                Title="Add to Quick Deploy"
                Sequence="1000"
                Description="Add this document to the next Quick Deploy job.">
    <UrlAction Url="javascript:window.location='/_layouts/QuickDeploy/QuickDeployDoc.aspx?SiteUrl={SiteUrl}&amp;ItemUrl={ItemUrl}&amp;returnUrl='+window.location" />
  </CustomAction>

protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                QuickDeploy quidkDep = new QuickDeploy();

                string siteUrl = Request["SiteUrl"];
                string webUrl = SPContext.Current.Web.Url;
                string itemUrl = Request["ItemUrl"];

                webUrl = siteUrl.Remove(0, webUrl.Length);

                quidkDep.QuickDeployment(siteUrl, webUrl, itemUrl);

                ClientScript.RegisterClientScriptBlock(this.GetType(), "GoBack", "function GoBack(){document.location='" + Request["returnurl"].ToString() + "';}", true);
            }
            catch (Exception ex)
            {
                throw new Exception("Could not save document to Quick Deploy job. " + ex.ToString());
            }
        }
于 2013-01-22T00:12:10.557 回答