是否可以动态呈现Web控件?

时间:2012-08-03 10:35:09

标签: asp.net dynamic rendering web-controls

我们有一个Web控件,我们想要渲染到已经加载的页面上的div。当用户点击菜单中的超链接时,就会发生这种情况。

Web控件有一些javascript文件,这些文件是在C#代码中动态添加的。

我们也没有使用aspx文件,并希望将web控件加载到普通的html页面上。

请让我知道最好的方法是什么,或者直接告诉我一篇文章,因为我正努力在网上找到有用的东西。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

您可以在字符串中动态渲染控件,将字符串发回并放在div中。使用ajax调用后面的代码来渲染控件并返回结果。

    // load the control
    var oCConrol = Page.LoadControl("CustomControl.ascx");

    // here you need to run some initialization of your control
    //  because the page_load is not loading now.

    // a string writer to write on it
    using(TextWriter stringWriter = new StringWriter())
    {
      // a html writer
      using(HtmlTextWriter renderOnMe = new HtmlTextWriter(stringWriter))
      {
        // now render the control inside the htm writer
        oCConrol.RenderControl(renderOnMe);

        // here is your control rendered output.
        strBuild = stringWriter.ToString();
      }
    }

替代方案,您可以通过仅使用内部控件创建一个额外的空aspx页面并使用Ajax调用它来获得相同的结果。结果将再次成为控制

javascript如何变得困难并且无法控制。你不能发回文本,然后让它在控件内作为javascript运行,这必须分开。

答案 1 :(得分:0)

我通过创建一个单独的.aspx页面和Jquery ajax做了类似的事情。使用Jquery ajax调用.aspx页面,并通过ajax响应从该页面返回所有呈现的HTML。

据我所知,没有任何方法可以在.aspx页面的上下文之外呈现Web控件。