【问题标题】:Issues rendering UserControl using Server.Execute()使用 Server.Execute() 呈现 UserControl 的问题
【发布时间】:2013-05-13 14:39:37
【问题描述】:

当 Server.Execute() myusercontrol 包含 asp(不是 html)的控件时,我收到以下消息

用户控制:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyWebUserControl1.ascx.cs" Inherits="ImageHandlerClient.WebUserControl1" %>

堆栈跟踪:

 at System.Web.UI.Page.HandleError(Exception e)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride)

【问题讨论】:

  • 您的问题是什么?您是否检查了异常消息(通过单击弹出窗口中“操作”下的“查看详细信息...”)?
  • 执行子请求时出错意味着 ascx 内部有问题,...
  • 当执行 ascx 文件时,所有内容都是 HTML 工作正常,但是当添加 asp 控制按钮时不起作用
  • 使用@Igor 方法获取内部异常,并将堆栈跟踪的内容添加到您的帖子中。在找出内部异常是什么之前,我们无法解决这个问题。
  • 我编辑问题并添加堆栈跟踪

标签: jquery asp.net webforms


【解决方案1】:

关于 Head runat="server",你可以试试这个:

public static string RenderView(string controlName)
{
    var pageHolder = new System.Web.UI.Page();
    var headHolder = new System.Web.UI.HtmlControls.HtmlHead();

    pageHolder.Controls.Add(headHolder);
    var formHolder = new System.Web.UI.HtmlControls.HtmlForm();
    pageHolder.Controls.Add(formHolder);

    // dynamically adding a script manager
    var sm = new System.Web.UI.ScriptManager();
    formHolder.Controls.Add(sm);


    var viewControl = pageHolder.LoadControl(controlName);

    formHolder.Controls.Add(viewControl);

    var output = new StringWriter();
    HttpContext.Current.Server.Execute(pageHolder, output, false);

    return output.ToString();
}

希望这会有所帮助

【讨论】:

  • 我收到此错误:“页面上需要 ScriptManager 才能使用 ASP.NET AJAX 脚本组件。”
  • @ZSH 同样成立:动态添加脚本管理器(更新了我的答案)但是,如果您的目标是提取控件发出的 html 代码,恐怕它不会在客户端上工作一边。
猜你喜欢
  • 2010-11-01
  • 1970-01-01
  • 2011-08-23
  • 2021-09-13
  • 1970-01-01
  • 2015-03-10
  • 2014-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多