首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过.RenderConrol将asp:panel渲染为div

如何通过.RenderConrol将asp:panel渲染为div
EN

Stack Overflow用户
提问于 2010-07-22 23:09:10
回答 2查看 2K关注 0票数 1

tl:dr版本:

有没有办法让面板在由RenderControl呈现时呈现为div?

背景:

我正在处理一个JSON1.1站点,我正在尝试将一个包含面板的控件呈现为一个字符串,这样我就可以将它作为asp.net传递回页面并刷新页面的一部分。

因此,我将呈现控件:

代码语言:javascript
复制
StringWriter twHeader = new StringWriter();
Html32TextWriter HeaderWriter = new Html32TextWriter(twHeader);             
MyHeader.RenderControl(HeaderWriter);
HeaderWriter.Close();
string HeaderHtml = twHeader.ToString()

当导航到包含MyHeader控件的页面时,该控件中的面板呈现为div。但是,当我在MyHeader上调用RenderControl时,面板将呈现为表格,因此当使用HeaderHtml更新页面时,布局会爆炸。

有没有办法让面板在由RenderControl呈现时呈现为div?

其他信息:

当我第一次调查这个问题时,我以为这可能是browsercaps的问题,但当我查看web.config时,我发现我们已经按照这个站点设置了browsercaps:http://slingfive.com/pages/code/browserCaps/

我想我可以通过使用<div runat="server">而不是面板来解决这个问题,最终这可能是最好的解决方案,但在这一点上,我非常好奇是否有一种方法可以让面板做我想要的事情。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-23 05:50:48

在我看到Yellowfog的答案之前,我继续尝试使用服务器端div而不是面板。具有讽刺意味的是,我实际上使用的是一个继承自面板的类,它恰好被称为MyPanel:不确定这是否会为Yellowfog赢得一个通灵徽章,或者是一个令人毛骨悚然的徽章:)。我不想采用这种方法的主要原因是因为我没有编写MyPanel类,并且不想因为继承自HtmlGenericControl而不是Panel而不得不处理对它的任何更改。但转换过程相当轻松,而且效果很好。

读完Yellowfog的回答后,我想我也应该试试他的建议:

代码语言:javascript
复制
public class MyPanel : Panel
{
    //snip

    protected override void Render(HtmlTextWriter output)
    {
        output.Write("<div id=\"{0}\" class=\"{1}\"", this.ID, this.CssClass);
        this.RenderChildren(output);
        output.Write("</div>");
    }

    //snip
}

这也很有效。

票数 1
EN

Stack Overflow用户

发布于 2010-07-22 23:14:32

我想要做的是创建一个继承自面板的类(比如MyPanel ),用它代替面板,并覆盖MyPanel中的Render方法来做我想做的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3310395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档