用于AJAX调用的Asp.Net单个控件呈现

用于AJAX调用的Asp.Net单个控件呈现,第1张

用于AJAX调用的Asp.Net单个控件呈现

问题在于,Page类并非旨在像这样进行实例化。如果启动Reflector,我们将很快看到在实例化Page类并将其作为IHttpHandler返回之后,Asp.Net内部设置了一个重要的属性。您将必须设置AppRelativeTemplateSourceDirectory。这是Control类上存在的一个属性,并且在内部设置了TemplateControlVirtualDirectory属性,Hyperlink例如使用该属性来解析链接中“〜”的正确URL。

请务必在调用LoadControl方法之前设置此值,因为AppRelativeTemplateSourceDirectory的值会传递到“主”控件创建的控件上。

如何获得正确的值来设置您的财产?在HttpRuntime类上使用静态AppDomainAppVirtualPath。总结一下,这应该起作用。

[WebMethod(EnableSession = true)]public string GetControl(int parma1, int param2){        var pageHolder = new Page() { AppRelativeTemplateSourceDirectory = HttpRuntime.AppDomainAppVirtualPath };    var viewControl = (UserControl)pageHolder.LoadControl("~/ascx/mycontrol.ascx");    var viewControlType = viewControl.GetType();        pageHolder.Controls.Add(viewControl);    var output = new StringWriter();    HttpContext.Current.Server.Execute(pageHolder, output, false);    return output.ToString();}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5140399.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-17
下一篇2022-11-18

发表评论

登录后才能评论

评论列表(0条)

    保存