我们有一个Web控件,我们想要渲染到已经加载的页面上的div。当用户点击菜单中的超链接时,就会发生这种情况。
Web控件有一些javascript文件,这些文件是在C#代码中动态添加的。
我们也没有使用aspx文件,并希望将web控件加载到普通的html页面上。
请让我知道最好的方法是什么,或者直接告诉我一篇文章,因为我正努力在网上找到有用的东西。任何帮助表示赞赏。
答案 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控件。