2011-10-11 13 views
2

をオーバーライドするには、まず誰かが親切にも、マイクロソフトがASP.NETボタンコントロールが<input type='button' />タグではなく<button />タグをレンダリングするために選択した可能性がある理由についてはコメントをしてくださいだろうか?私は、この結果として、(特になしテキストとアイコンだけでjQueryのボタンを作成する)多くの問題を見てきました。ASP.NETボタンとrenderイベント

第2に、Render()イベントをオーバーライドして独自のカスタムボタン出力を作成しようとしていますが、このイベントで提供される出力の変更方法を理解するのが難しいです。

私はそれが保護されたプロパティTagKey = Input {47}が含まれて見ることができますRender()イベントにパラメータとして提供されHtmlTextWriterを見れば、それは単に何とかこのプロパティを変更するとボタンに変更したり、私がする必要がありますすることが可能ですHtmlTextWriterの新しいインスタンスを作成し、それを最初からすべて移入しますか?もしそうなら、誰がどのようにこれに対するとしていくつかのガイダンスを提供することができますが、一般的に行われ、私は私の派生ボタンクラスが元と機能的に同等であることを保証するために確認する必要があり特別な注意事項がある場合、(HTMLを除く)されるだろうか?

<Assembly: TagPrefix("MyCompany", "MyCustomButton")> 
Public Class MyButton 
    Inherits Button 

    Protected Overrides Sub OnPreRender(e As System.EventArgs) 
     MyBase.OnPreRender(e) 
    End Sub 

    Protected Overrides Sub Render(writer As System.Web.UI.HtmlTextWriter) 
     'writer.TagKey = Input {47} 
     MyBase.Render(writer) 
    End Sub 
End Class 

答えて

1

Microsoftの決定には何のアイデア、しかしTagKeyのために、あなただけTagKey propertyをオーバーライドしてHtmlTextWriterTag.Buttonを返却する必要があります。あなたはまた、AddAttributesToRender methodなくtype="button"属性、それが出力されないだろうことができるように、基本メソッドを呼び出すをオーバーライドすることになるでしょう。異なるブラウザで使用される場合

1

Button要素は、特に送信されるデータについて、いくつかの癖を持っています。マイクロソフトは、ブラウザの実装間の一貫性を高めるために、入力を使用する可能性が最も高いと考えていました。

関連する問題