c#中链接无法找到问题解决

本文介绍了一种解决ASP.NET应用程序中菜单控件加载失败的方法。通过创建一个公共类来获取网站根目录URL,并在.ascx控件文件中利用该类生成带有正确路径的链接,从而确保菜单项能正确导航到各个页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发环境: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"/>

即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值