【发布时间】:2014-08-18 07:45:02
【问题描述】:
以下是我的通用处理程序的代码。此代码编译并将名为 NavigationMenu.ascx 的用户控件转换为 HTML 并将其发送到调用页面:
<%@ WebHandler Language="C#" Class="GetMenu" %>
using System;
using System.Web;
using System.Web.Script.Serialization;
public class GetMenu : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//--some other code
string markup = getUserControlMarkup(0);
context.Response.Write(markup);
}
public string getUserControlMarkup(int menuType)
{
System.IO.StringWriter writer = new System.IO.StringWriter();
using (System.Web.UI.Page page = new System.Web.UI.Page())
{
System.Web.UI.UserControl userControl = null;
userControl = (System.Web.UI.UserControl)page.LoadControl("~/user controls/NavigationMenu.ascx");
Type type = userControl.GetType();
page.Controls.Add(userControl);
HttpContext.Current.Server.Execute(page, writer, false);
return writer.ToString();
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
这是用户控件的设计代码:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="NavigationMenu.ascx.cs" Inherits="NM.user_controls_NavigationMenu" %>
<!--Some html -->
以下是它的cs代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace NM
{
public partial class user_controls_NavigationMenu : System.Web.UI.UserControl
{
public int menuType = -1;
public int selectedItem = -1;
protected void Page_Load(object sender, EventArgs e)
{
//Some code
}
}
}
现在我想从通用处理程序访问menuType 和selectedItem。我尝试像这样访问它们:
((NM.user_controls_NavigationMenu)userControl).menuType=0;
但 Visual Studio 无法找到 NM 命名空间。我尝试在 NM 命名空间中添加通用处理程序类,但同样的问题仍然存在。请告诉我如何解决这个问题?
【问题讨论】:
标签: c# asp.net .net user-controls httphandler