如何在Literal中放置服务器端控件?

时间:2012-02-01 19:17:38

标签: c# asp.net literals

我想在Literal中放置服务器端控件。可能吗?如果有,怎么样?我知道班级的描述说明了一切:

  

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

3 个答案:

答案 0 :(得分:1)

如果您想将服务器端代码包装在其他控件中,您可能希望使用Panel。正如评论已经说明的那样,不可能将文字文本视为服务器端控件。

答案 1 :(得分:0)

有趣的是,我昨天只看了一些旧的代码。文字可以做到这一点。我这样做是为了通过Javascript的Web服务调用来发出用户控件(yikes,我知道......这很有趣),但这也符合你的需求。

    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(“用户控件的路径”)。话虽如此,在用户控件中必须将子控件包装在表单控件中。

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

我希望有所帮助!

答案 2 :(得分:-4)

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