开发环境:Visual Studio
情况:主页面使用模版,左边的菜单使用了一个.cs的控件,结果登录进来后,默认的页面可以正常显示,点击其他,提示如下图所示的错误:
解决办法:
1、在App_Code文件夹下建一个类Class.cs,内写代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
/// <summary>
///Class1 的摘要说明
/// </summary>
public class Class1
{
//
//TODO: 在此处添加构造函数逻辑
//
/// <summary>
/// 取得网站的根目录的URL,包括虚拟目录
/// </summary>
/// <returns>如:https://www.do.com/apppath </returns>
public static string GetRootURI()
{
string AppPath = "";
HttpContext HttpCurrent = HttpContext.Current;
HttpRequest Req;
if (HttpCurrent != null)
{
Req = HttpCurrent.Request;
string UrlAuthority = Req.Url.GetLeftPart(UriPartial.Authority);
if (Req.ApplicationPath == null || Req.ApplicationPath == "/")
//直接安装在 Web 站点
AppPath = UrlAuthority;
else
//安装在虚拟子目录下
AppPath = UrlAuthority + Req.ApplicationPath;
}
return AppPath;
}
}
2.控件.ascx文件里写如下代码:
<%printLink(); %>
3.控件.ascx.cs文件里写如下函数:
protected void printLink()
{
Response.Write("<a href='" + Class1.GetRootURI() + "/Manage/Equipment/Equipment.aspx'>设备列表</a>" );
Response.Write("<a href='" + Class1.GetRootURI() + "/Manage/Equipment/AddEquip.aspx'>添加设备</a>");
Response.Write("<a href='" + Class1.GetRootURI() + "/Manage/Equipment/Equipment.aspx'>设备列表</a>");
Response.Write("<a href='" + Class1.GetRootURI() + "/Manage/Equipment/Equipment.aspx'>设备列表</a>");
Response.Write("<a href='" + Class1.GetRootURI() + "/Manage/Equipment/Equipment.aspx'>设备列表</a>");
Response.Write("<a href='" + Class1.GetRootURI() + "/Manage/Blog/Blog.aspx'>查看日志</a>");
}
4、模版页相应位置添加:
<ucList:ListUserControl id="ListUserControl" runat="server"/>
即可