我有一个非常独特的情况,我需要在页面上生成一个<textarea>
,来自代码:
Public Class Textarea
Inherits System.Web.UI.HtmlControls.HtmlTextArea
End Class
控制:
<me:Textarea ... />
问题是,我的独特案例要求我使用奇怪的属性。我基本上需要输出这样的东西:
<textarea :class="{}" :id="something">
所以我希望能够做到:
<me:Textarea :class="{}" etc. />
是否有一种简单的方法允许完全按照我键入的呈现方式?或者我应该使用另一个控件?在渲染阶段从头开始构建它?我得到关于标签格式不正确的错误,所以最终我只是希望它将<textarea>
标签与它的内容完全一样地吐出来。在标签中包含C#因为无关紧要。举个例子。
答案 0 :(得分:1)
所有这些答案都非常出色,但我想与大家分享一下我想办法让它变得尽可能简单。
我刚创建了一个控件:
Public Class Wrapper
Inherits Control
End Class
然后:
<me:Wrapper>
<textarea anything i want here... ></textarea>
</me:Wrapper>
这就像我打字一样吐出来。对于一些质疑为什么甚至麻烦的人,我在另一个使用控件构建器的解析器中,而<textarea>
是其中一个子控件,因此需要一种解决方法来使用常规HTML。
答案 1 :(得分:0)
尝试以下方法。这不是太糟糕。
对于服务器端控件,创建一个可以填充所需文本的属性。我称之为“ExtraStuff”。使用私有变量支持它。然后覆盖渲染以写出额外的东西作为标记的一部分:
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>
输出相同。