ASP.NET 按钮不呈现 ID - Sharepoint Web 部件

Posted

技术标签:

【中文标题】ASP.NET 按钮不呈现 ID - Sharepoint Web 部件【英文标题】:ASP.NET Button not rendering ID - Sharepoint Web Part 【发布时间】:2012-06-22 01:53:23 【问题描述】:

我有一个共享点 Web 部件,我在其中以编程方式向页面添加一个按钮。当按钮呈现时,它没有名称或 ID。我在 web 部件后面的代码中执行以下操作:

public class ChartControl : WebPart

    protected Button BubbleChartApplyButton;

    protected override void CreateChildControls()
    
        BubbleChartApplyButton = new Button Text = "Apply This";
    

    protected override void RenderWebPart(htmlTextWriter output)
    
        BubbleChartApplyButton.RenderControl(output);
    

这就是渲染的内容:

    <div WebPartID="4844c2e5-2dd5-437b-a879-90c2e1e21f69" HasPers="false" id="WebPartWPQ2"  class="ms-WPBody ms-wpContentDivSpace" allowDelete="false" style="" >
         <input type="submit" value="Apply This" />

...more output here...
</div>

注意输入标签是如何以没有名称和 ID 的形式呈现的...我希望看到类似 ID="ctl00$m$g_2d506746_d91e_4508_8cc4_649e463e1537$ctl13" 之类的东西。

关于为什么按钮控件不使用 .NET 通常生成的名称和 ID 呈现的任何想法?

谢谢,

瑞恩

【问题讨论】:

【参考方案1】:

您是否尝试过类似的方法:

BubbleChartApplyButton = new Button Text = "Apply This", ID = "myButtonID";

【讨论】:

是的,然后会呈现一个 ID...但我仍然想知道为什么 ID 没有自动生成。最终,我试图弄清楚为什么我的事件处理程序会被这个确切的按钮调用,但首先我想看看为什么 ID 没有自动呈现,以防万一它是相关的。【参考方案2】:

呃,我忽略了一件简单的事情。所以我正在创建控件并将其呈现到输出中,以便在呈现页面时显示出来。但是,为了将其拨入控制树以便 ASP.NET 分配 ID,并且我可以将其连接到事件处理程序,我必须专门将其添加到控制树。

所以我也需要这样做:

protected override void CreateChildControls()

    BubbleChartApplyButton = new Button Text = "Apply This";

    Controls.Add(BubbleChartApplyButton) //<== ADD TO THE CONTROL TREE BEAVIS!

【讨论】:

以上是关于ASP.NET 按钮不呈现 ID - Sharepoint Web 部件的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net 按钮不会呈现背景图像

带有多行文本的 ASP.NET 按钮的 Chrome 呈现

Asp.net MVC 5 视图在使用 F5 重新加载页面之前不呈现

将 ID 分配给 asp.net Javascript 按钮

asp.net用的C#语言能不能做到点击按钮不刷新页面?

ASP.NET Classic 不使用 WebForm_PostBackOptions 的默认选项创建按钮回发