asp.net 调试URL与项目URL

x8diyxa7  于 2023-01-27  发布在  .NET
关注(0)|答案(1)|浏览(162)

使用aspx页(不是MVC)调试. ASP.NET Web应用程序时找不到我的aspx页。
我有下面的HTML代码:

<Head title="WhycantIdebugbutafterdeploythisworks" url="#">
<MenuItem title="Some Menu" url="/ApplicationName/AFolder/First.aspx" />
<MenuItem title="Another Menu" url="/ApplicationName/AFolder/Second.aspx" /></Head>

发布后,发现并正确显示aspx页面:url=http://ApplicationName/AFolder/First.aspx,但当我调试我的应用时,它找不到aspx页面,并给出错误消息"The file '/ApplicationName/AFolder/First.aspx' does not exist."
如果我从url HTML属性中删除/ApplicationName,调试可以工作,但部署的版本不能。
如何修复HTML,使网址在调试和IIS上都能工作?

bqujaahr

bqujaahr1#

一般来说,你不包括"应用程序名称"在您的任何网址的。
您只需提供文件夹的路径名,然后提供网页。
而且你可以用"~/"来指定"root",但前提是你有一个runat ="server"标签。
所以,你的网址可以这样说:

<MenuItem title="Some Menu" runat="server" url="~/AFolder/First.aspx" />
<MenuItem title="Another Menu" runat="server" url="~/AFolder/Second.aspx" />

现在,你可以在大多数情况下只使用/Afolder/xxxx.aspx,然而,这将是相对于你当前的网页寻址,因此,大多数菜单将无法工作,如果你坐在一个不同的位置或文件夹。
因此,如果可能,请尝试添加/使用runat ="server"标记,这样系统将解析并允许使用"~/"。
在javascript代码中使用"~/"是不合法的,而且在大多数情况下,它不适用于简单的超链接。
但是,对于响应.重定向("~/somefolder/xxxx.aspx ")等隐藏代码,您就可以了。
对于页面(或菜单)上的超链接控件呢?
如前所述,如果所讨论的控件有runat ="server"标记,则可以包含/拥有/使用"~/"。
这样,网站的根URL就不重要了,更重要的应该永远不重要。
因此,由于像超链接这样的www.example.com控件具有runat ="server",因此此URL是合法的:asp.net control like a hyper link has the runat="server", then this URL is legal:

<asp:HyperLink ID="HyperLink1" runat="server" 
     NavigateUrl="~/Test/GridRadio.aspx">HyperLink</asp:HyperLink>

然而,如果你使用的是普通的jane HTML链接,那么你就不能使用上面的"~/"。(这意味着你必须考虑到你所在的文件夹)。
所以,如果我在说文件夹网格,我想上面的链接?
我有这个

http://localhostxxxx/Grids/MyGrid.aspx

我想导航到

http://localhostxxxx/Test/GridRadio.aspx

然后平面jane(非服务器)端将如下所示:

<a href="../Test/GridRadio.aspx">link text</a>

因此,请注意,我们必须使用.."向下"一个文件夹级别,然后返回到测试文件夹。
然而,对于服务器端控件,正如前面提到的,您可以(也应该)始终使用"~/folder/page. aspx "类型的格式,它将始终为您工作。
所以,不要包括appname,也不要包括host name,所有内容都应该是从根文件夹开始的路径,在99%的情况下,使用"~/"作为服务器端控件。
所以,如果你选择"总是"使用相对寻址,那么你必须考虑到当前页面的"嵌套",以及你想导航到的目标页面。

相关问题