试试下面的。这还不错。
对于您的服务器端控件,创建一个属性,您可以用您想要的任何文本填充该属性。我称它为“额外的东西”。用私有变量支持它。然后覆盖 Render 以将您的额外内容作为标签的一部分写出:
Public Class Textarea
Inherits System.Web.UI.HtmlControls.HtmlTextArea
Private m_sExtraStuff As String = ""
Public Property ExtraStuff As String
Get
Return m_sExtraStuff
End Get
Set(value As String)
m_sExtraStuff = value
End Set
End Property
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
writer.Write("<textarea ")
writer.Write(m_sExtraStuff)
writer.Write("></textarea>")
End Sub
End Class
然后,在您的标记中,您可以通过将其添加到您创建的属性中来添加您想要写出的额外内容。您必须确保它已正确编码:
<me:Textarea runat="server" ExtraStuff=":class="{}" :id="something""></me:Textarea>
当它呈现时,我认为它看起来像你想要的那样:
<textarea :class="{}" :id="something"></textarea>
或者:
另一种可能更健壮的方法是显式声明这些特殊属性,然后以您的格式写出它们。服务器端控制:
Public Class Textarea
Inherits System.Web.UI.HtmlControls.HtmlTextArea
Private m_sSpecialID As String = ""
Private m_sSpecialClass As String = ""
Public Property SpecialID As String
Get
Return m_sSpecialID
End Get
Set(value As String)
m_sSpecialID = value
End Set
End Property
Public Property SpecialClass As String
Get
Return m_sSpecialClass
End Get
Set(value As String)
m_sSpecialClass = value
End Set
End Property
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
writer.Write("<textarea :class=""")
writer.Write(m_sSpecialClass)
writer.Write(""" :id=""")
writer.Write(m_sSpecialID)
writer.Write("""></textarea>")
End Sub
End Class
标记:
<me:Textarea runat="server" SpecialClass="{}" SpecialID="something"></me:Textarea>
输出是一样的。