c# - 覆盖 SharePoint :SaveButton in custom form template

标签 c# asp.net sharepoint-2010 overriding

首先让我澄清一下,并发布已经解释了如何覆盖 SaveButton 的文章:

我已阅读并理解它们,我只是不知道如何在我的特定情况下完全实现它:

我有一个自定义渲染模板“CustomRender”,其中包含“真实表单”。真实表单的代码看起来如下:

<%@ Register TagPrefix="wssuc" TagName="ToolBar"
             src="~/_controltemplates/ToolBar.ascx" %>
<%@ Control Language="C#" AutoEventWireup="true"
    CodeBehind="RealForm.ascx.cs" Inherits="CustomNameSpace.CustomForm" %>
<p>Test</p>
<wssuc:ToolBar runat="server" id="toolbar">
    <TemplateButtons>
        <SharePoint:SaveButton runat="server" />
    </TemplateButtons>
</wssuc:ToolBar>

现在我想覆盖这个保存按钮。上面的网站声明我只需要编写另一个覆盖按钮的控件。例如:

public class NewSaveButton: SaveButton

{
    protected override bool SaveItem()

    {
        bool success = base.SaveItem();

        RedirectUrl = String.Concat(List.ParentWeb.ServerRelativeUrl, "/",
                      List.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url, @"?ID=", 
                      ListItem.ID, @"&Source=", ListItem.ParentList.DefaultViewUrl);
        return success;

    }
}

现在我只是不知道如何在我的其他模板中注册这个模板。我是否不能只覆盖模板后面代码中的 SaveButton - 我该如何做到这一点并稍后引用它?

  • 选项一:表单的代码隐藏 ( RealForm.ascx.cs ) - 我可以将覆盖方法放在那里吗?如何在表单中引用该按钮(如何获取 <NewSaveButton> )?
  • 选项二:另一个仅用于按钮的模板,例如SaveButton.ascx” - 我如何通过 <%@ Register... %> 引用它,即当通过功能部署时我如何知道 PublicKeyToken 等。这里同样的事情:我的目标是获得某种“<NewSaveButton> ” “表单控件。

最佳答案

执行此操作时,您将创建一个新的服务器控件,因此您需要在页面上(或者在本例中,在模板 .ascx 文件中)注册新控件。

<%@ Register TagPrefix="MyPrefix" Namespace="ControlNamespace" Assembly="MyFullyQualifiedAssembly" %>

在代码文件中,您可以将 ToolboxDataAttribute 添加到类中(仅当您从 Visual Studio 中的工具箱中拖放控件时才需要这样做)

[ToolboxData("<{0}:NewSaveButton runat=\"server\"></{0}:NewSaveButton>")]
public class NewSaveButton : SaveButton {}

现在,您应该能够将表单上的保存按钮替换为以下内容:

<MyPrefix:NewSaveButton runat="server"></MyPrefix:NewSaveButton>

您基本上是按照 ASP.NET 的规则创建一个新的服务器控件(这里没有发生任何共享点特定的事情)。

有关更多信息,请查看此页面:http://msdn.microsoft.com/en-us/library/yhzc935f(v=VS.85).aspx

关于c# - 覆盖 SharePoint :SaveButton in custom form template,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5249295/

相关文章:

c# - 如何通过命令行执行命令并等待它完成

c# - 在 nhibernate queryover 查询中指定获取策略(选择、连接等)

c# - 我应该选择哪种格式来请求 C# 中的 API - JSON 或 XML

javascript - 连接开始后连接到 SignalR Hub

asp.net - ASP.NET MVC 5 中的自定义文件夹结构

c# - 将 C# 字节数组传递给 javascript

sharepoint-2010 - 在用户仍登录时重新计算 SharePoint 2010 用户的声明

sharepoint-2010 - 如何从共享点列表中获取列的数据类型?

c# - 由于 docker 错误,无法将 .net 5.0 和 6.0 发布到 Azure 容器注册表

c# - 通过 SSL 发送请求时无法发布文件数据