我有一个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("TestButton", "", true, "", "", false, false))" id="TestButton" class="euva-button-decorated" /></a>
...它似乎是为双引号转义输出,这意味着浏览器无法理解javascript。
如何使渲染方法不会转义注入的ASP.Net客户端单击处理程序??
注意我也有自己的客户端点击处理程序,它在页面标记中以声明方式声明。
答案 0 :(得分:0)
怪异。我做过类似的事情,总是很好。试试这个:
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();
}