1
我從一個HttpHandler的渲染一個自定義用戶控件像這樣:動態呈現UserControl時,如何使其使用當前會話?
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string workName = context.Request.QueryString["name"];
string workForm = RenderView("~/work/" + workName + ".ascx");
context.Response.Write(workForm);
}
public static string RenderView(string path)
{
Page pageHolder = new Page();
UserControl viewControl = (UserControl)pageHolder.LoadControl(path);
pageHolder.Controls.Add(viewControl);
StringWriter result = new StringWriter();
HttpContext.Current.Server.Execute(pageHolder, result, false);
return result.ToString();
}
的問題是,所呈現的頁面生成一個新的會話。 (通過比較呈現的HTML的會話ID與當前會話ID,我可以知道)
如何讓動態頁面使用當前會話?
注意:該代碼不在登錄後面,但將在未來。是否有任何問題需要記住,例如提供會話和auth cookie等?
我不得不給你+1,因爲這個問題更好地回答了我的問題,關於如何動態加載UserControl並將其轉換爲字符串比任何其他答案。我幾乎寫下了這個問題,直到我回答你的問題。 RenderView()函數是將UserControls轉換爲字符串的一個很好的例子。謝謝。 – RacerNerd