【问题标题】:Organizing ASP.NET Web Application Project组织 ASP.NET Web 应用程序项目
【发布时间】:2020-01-21 20:43:49
【问题描述】:

ascxaspx 文件放入不同文件夹后,如何更新对用户控件的引用?

我不习惯使用 ASP.NET Web 窗体项目,但我继承了这个项目。当我第一次收到这个项目时,每个文件都在根目录下;没有任何文件夹。我已经开始将文件放入文件夹并更新路径。

但是,当我尝试加载用户控件时,我收到此错误:

不能使用前导 .. 退出顶级目录。

我的用户控件位于:

myProject\controls\Widget.asxc

我的页面位于:

myProject\Pages\Activity\AST_Page.aspx

来自AST_Page.aspx的标记:

<%@ Register TagPrefix="tf" TagName="Cost" Src="..\..\controls\Widget.ascx" %>

我的理解是:

  • 当用户导航到AST_Page.aspx 时,当前路径为myProject\Pages\Activity\
  • ..\..\ 开始路径应该把我放在myProject\
  • 因此,..\..\controls\Widget.ascx 实际上指向了myProject\controls\Widget.asxc
  • 我的项目可以访问我的myProject\

如果我将..\..\controls\Widget.ascx 更改为..\controls\Widget.ascx,我会收到一个关于找不到文件的不同错误,这是因为Widget.ascx 不在myProject\Pages\controls\ 之下。

【问题讨论】:

  • 这可能是一个愚蠢的问题,但为了安全起见:您确定Pagescontrols 都不是虚拟应用程序吗?我认为它们不是,因为您刚刚创建了这些目录 - 但如果是这种情况,您会得到同样的错误。
  • 另外,如果仅出于测试目的,我建议尝试通过根相对 (/controls/Widget.ascx) 和应用程序根相对 (~/controls/Widget.ascx) 路径调用它,以查看它们的行为。需要明确的是,所有这三个都应该是等效的,但是比较它们的输出可能会提供对正在发生的事情的更多见解。
  • “~”给了我同样的错误。但是,我尝试指向一个不存在的文件 (/controls/FAKE.ascx),但错误消息已更改。对于 FAKE.ascx,错误是:“文件 '/MyProject/controls/FAKE.ascx' 不存在。”
  • 在看到 Jeremy Caney 的帖子后,我决定逐行注释掉我的 aspx。我找到了以“~/../../”开头的路径。必须是从副本和替换。因此,它与 ascx 无关。
  • 你可以将控件拖放到页面上,然后VS会为你确定路径吗?

标签: asp.net webforms visual-studio-2019


【解决方案1】:

页面上有第二个问题。我在 src 属性中有“~/../../”;可能是由于积极的查找和替换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 2011-02-03
    相关资源
    最近更新 更多