在 HtmlTextWriterAttribute 中实现 runat

发布于 2024-10-10 05:47:07 字数 695 浏览 0 评论 0原文

嗨,亲爱的朋友,我有 Web 自定义控制

Window 类的渲染函数

    protected override void RenderContents(HtmlTextWriter wr)
    {
        wr.AddAttribute("runat", "server",true);
        wr.AddAttribute("id", this.UniqueID, false);
        wr.RenderBeginTag(HtmlTextWriterTag.Div);
        wr.RenderEndTag();
        wr.WriteLine();
        base.RenderContents(wr);
    }


在网页上使用:

(cc1:Window ID="Window1" runat="server" ) (div) runat="server" id="aaaa"(/div)


浏览器源结果:

(span id="Window1")(div runat="server" id="Window1") (/div) 跨度) (div) id="aaaa"(/div)

Hi dear friends, i have web custom control

this render function of Window class

    protected override void RenderContents(HtmlTextWriter wr)
    {
        wr.AddAttribute("runat", "server",true);
        wr.AddAttribute("id", this.UniqueID, false);
        wr.RenderBeginTag(HtmlTextWriterTag.Div);
        wr.RenderEndTag();
        wr.WriteLine();
        base.RenderContents(wr);
    }


Use on web page:

(cc1:Window ID="Window1" runat="server" )
(div) runat="server" id="aaaa"(/div)


Browser sourse result:

(span id="Window1")(div runat="server" id="Window1")
(/div)
span)
(div) id="aaaa"(/div)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

四叶草在未来唯美盛开 2024-10-17 05:47:07

你从来没有在你的问题中真正提出过一个问题。无论如何,我认为您希望自定义控件像

一样呈现。

public class Window : WebControl {
    public Window() : base(HtmlTextWriterTag.Div) {}

    protected override void AddAttributesToRender(HtmlTextWriter writer) {
        writer.AddAttribute(HtmlTextWriterAttribute.Id, UniqueID);
    }
}
  1. 您应该调用 WebControl 上接受 HtmlTextWriterTag 的构造函数。
  2. 您应该重写 AddAttributesToRender(而不是 RenderContents)以向元素添加属性。
  3. runat="server" 仅在解析 html 代码期间使用,在您的控件中没有用处。

You never once in your question actually state a question. Anyhow, I think you want your custom control to render like a <div runat="server">.

public class Window : WebControl {
    public Window() : base(HtmlTextWriterTag.Div) {}

    protected override void AddAttributesToRender(HtmlTextWriter writer) {
        writer.AddAttribute(HtmlTextWriterAttribute.Id, UniqueID);
    }
}
  1. You should call the constructor on WebControl which accepts a HtmlTextWriterTag.
  2. You should override AddAttributesToRender (instead of RenderContents) to add attributes to your element.
  3. runat="server" is only used during parsing of your html code, and have no use in your controls.
你是我的挚爱i 2024-10-17 05:47:07

我不确定您的使用示例是否只是发布时的拼写错误和格式错误,或者您实际上是否是这样使用它的(除非我知道您发布了<...> as (...),这不是我的问题)。


您应该首先将控制类实现为 西蒙·斯文森建议

"aaaa" 的 div 成为控件 div 标记内的 html 标记,则应该像这样使用它(注意结尾 ):

然后,如果您希望 id = 在网页上:

<cc1:Window ID="Window1" runat="server">
  <div id="aaaa">Text content here</div>
</cc1:Window>

浏览器源码结果:

<div id="Window1">
  <div id="aaaa">Text content here</div>
</div>

正如Simon所说,runat="server"主要用于服务器控件,对于渲染的HTML控件没有任何意义。

I am not sure if your example of use is just typo and formatting errors when posting, or if it is actually this way you use it (exept I understand that you posted <...> as (...), which is not my issue here).


You should start with implementing your control class as suggested by Simon Svensson.

Then, if you want your div with id="aaaa" be a html tag inside your controls div tag, you should use it like this (note the ending </cc1:Window>):

Use on web page:

<cc1:Window ID="Window1" runat="server">
  <div id="aaaa">Text content here</div>
</cc1:Window>

Browser source result:

<div id="Window1">
  <div id="aaaa">Text content here</div>
</div>

As Simon said, runat="server" is mainly used for server controls, and has no meaning for the rendered HTML controls.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文