繁体   English   中英

如何将服务器端控件置于Literal中?

[英]How to put server-side control in Literal?

我想将服务器端控件放入文字中。 可能吗? 如果是,怎么办? 我知道该类的描述说明了一切:

表示HTML元素,文本和ASP.NET页中不需要在服务器上进行处理的任何其他字符串

如果要将服务器端代码包装在其他控件中,则可能要使用Panel。 正如评论所指出的那样,将文本文本视为服务器端控件是不可能的。

有趣的是,昨天我刚浏览了一些旧代码时,出现了这一点。 文字可以做到这一点。 我最初这样做是为了通过Javascript通过Web服务调用发出用户控件(我知道,这很有趣),但这也符合您的需求。

    protected void Page_Load(object sender, EventArgs e)
    {
        litTest.Text = RenderUserControlAsString("WebUserControl1.ascx");
    }

    private string RenderUserControlAsString(string path)
    {
        Page page = new Page();
        UserControl control = (UserControl)page.LoadControl(path);

        //add the control to the page
        page.Controls.Add(control);

        StringWriter sw = new StringWriter();
        HttpContext.Current.Server.Execute(page, sw, true);

        //return the rendered markup of the page, which only has our single user control
        return sw.ToString();
    }

将文字放在页面上,然后将其文本值分配给RenderUserControlAsString(“ User Control的路径”)。 话虽如此,在用户控件中,您必须将子控件包装在窗体控件中。

<form runat="server"> <asp:TextBox id="txtTest" Text="From User Control" runat="server"  /> </form>

希望对您有所帮助!

TextBox myTextBox = new TextBox();
YourLiteralID.Controls.Add(myTextBox);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM