Переопределенная кнопка управления экранированием контента. Как это остановить? - PullRequest
1 голос
/ 16 апреля 2010

У меня есть элемент управления 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 внедрил свой обработчик кликов, он делает следующее ...

 <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.

Как сделать так, чтобы метод рендеринга не экранировал внедренный обработчик щелчков клиента ASP.Net ??

Примечание. У меня также есть свой собственный обработчик кликов, который декларативно объявляется в разметке страницы.

1 Ответ

0 голосов
/ 16 апреля 2010

странно. Я сделал что-то похожее на тебя, и это всегда работает нормально. Попробуйте это:

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...