代码之家  ›  专栏  ›  技术社区  ›  Remotec

重写的按钮控件转义内容。如何阻止它?

  •  1
  • Remotec  · 技术社区  · 15 年前

    我有一个ASP.Net按钮控件,我已经重写以提供不同的功能。代码如下所示。。我重写了Render方法以使用 <a> ...

        /// <summary>
        /// Render Method
        /// </summary>
        /// <param name="writer"></param>
        protected override void Render(HtmlTextWriter writer)
        {
            base.CssClass = "euva-button-decorated";
            writer.Write("<a class=\"euva-button\">");
            base.Render(writer);
            writer.Write("</a>");
        } 
    

    当我检查页面上生成的源代码时,我发现ASP.Net已经注入了它的click处理程序,它执行以下操作。。。

     <a class="euva-button"><input type="submit" name="TestButton" value="Test Button" onclick="clickOnce(this);WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;TestButton&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" id="TestButton" class="euva-button-decorated" /></a>
    

    ... 它似乎在转义双引号的输出,这意味着浏览器无法理解javascript。

    注意,我还有自己的client click处理程序,它在页面标记中声明。

    1 回复  |  直到 15 年前
        1
  •  0
  •   BritishDeveloper    15 年前

    奇怪的。我也做过和你相似的事,而且总是很好。试试这个:

    public override void RenderControl(HtmlTextWriter writer)
    {
        CssClass = "euva-button-decorated";
        //give the 'a' a class
        writer.AddAttribute(HtmlTextWriterAttribute.Class, "euva-button");
        //open 'a'
        writer.RenderBeginTag(HtmlTextWriterTag.A);
        //render the button
        base.RenderControl(writer);
        //close a
        writer.RenderEndTag();
    }