NIGHTMARE(死亡之夜 - WAP转换):参考/互惠错误的无尽循环(难以解决的难题?)

时间:2009-08-06 21:50:57

标签: asp.net

请仔细阅读本文并在回复之前仔细考虑。这可能是一个简单的修复,但我非常怀疑它。你必须了解这里的情况和我正在解释的冲突,以便能够帮助我。

所以我将我们的网站代码复制到WAP项目。我摆脱了任何参考错误。相信我,我已经检查过每一个错误。现在来到我的问题和假设(它无法解决):

我们有一个母版页,里面有很多公共属性。

几乎所有的.aspx.cs代码都是从Master那里引用某种属性并使用它。

但是,另一方面,我们的母版页无法识别我在母版页中注册的任何用户或自定义控件标签。寄存器标签很好。这些都是在网站项目中一起引用的(主页面引用了对某些用户和自定义控件的引用,并且任何.aspx.cs引用任何母版页公共属性都很好)。

所以,如果你考虑一下,这可能是一个无休止的循环,在这个WAP转换中永远无法解决。为什么?因为我看到它的方式,如果我的母版页无法引用其中的少数用户控件或自定义控件,我的母版页将无法编译。如果我的母版页无法编译和引用这些用户和自定义控件的原因是因为存在“其他错误”而其他错误是.aspx.cs文件错误,因为它们会出现错误,引用母版页公共属性然后我们有一个真正的问题。这两个都是错误的,因为它们彼此相关并且存在无法解决的问题,因为它们是相关的!你抓住了我的漂移吗?

让我举一个例子/比喻来说明这一点。

MyMasterPage.aspx

(其中的示例代码)

<%@ Register Src="~/WebControls/User/Navbar.ascx" TagName="Navbar" TagPrefix="ac" %>

<%@ Register TagPrefix="am" Namespace="[ourglobalnamespace].Controls.Custom" %>

<tr>
    <td valign=top runat="server" id="tdNavBar"><ac:Navbar runat="server" id="navbar"></ac:Navbar></td> (this references a user control and is blowing up)
</tr>

...

<tr>
        <td><am:NavigationPath runat="server" id="navPath" Seperator="&raquo;" /></td> (this references a custom control and is blowing up)
    </tr>

现在我收到的错误是它无法识别上述任何控件,无论出于何种原因我无法理解

MyMasterPage.aspx.cs

   public BL.Store Store  
   {  
      get { return this.store; }  
   }  

   public BL.Product Product  
   {  
      get { return this.product; }  
   }  

仅显示我们通过Master Page的代码暴露的一些公共属性。这些属性在我们的代码中的类后面的.aspx.cs代码中被引用和使用。

使用母版页属性的示例.aspx .cs:

   protected override void OnInit(EventArgs e)  
   {  
      int productID = Master.ProductID;  
      product = Master.Product;  

        protected override void OnInit(EventArgs e)
        {
            int productID = Master.ProductID;
            product = Master.Product;
         ...

所以想象一下我现在有1500多个错误,主要是由于2个原因而且它们不是因为参考错误(我已经解决了这一切):

1)母版页无法编译

2) .aspx页面的代码隐藏爆炸,因为母版页无法编译,因此对母版页属性的任何引用都会导致后面的代码爆炸

如果两个错误实际上都依赖于相互修复,我怎么能解决这个问题呢?这是不可能的!

3)无法为存在这些问题的剩余文件生成Designer文件。因此,我无法右键单击母版页和那些用户控件以转换为Web应用程序,以便它可以为它们成功创建.designer.cs文件

所以我们确实有3个问题(第3个是1和2的后续效果),我不知道如何在这里解决所有源于Master页面爆炸,但可能会爆炸,因为代码隐藏页面正在吹那个引用主页的属性也在爆炸!你抓住了我的漂移吗?

我希望这是一个愚蠢的简单,我忽略了但我已经花了几天时间,我没有看到任何其他东西可以让我解决这个烂摊子。

有人开枪射击我摆脱这种转换的痛苦。如果有人可以帮我解决这个问题,我发誓我会寄给你一个啤酒的案例!

3 个答案:

答案 0 :(得分:1)

或许考虑一下这有助于排除故障。

  • 创建一个新的测试项目。
  • 将您的母版页复制到该页面。
  • 解决那里的任何参考问题。
  • 仅使用Master
  • 获得成功构建
  • 为您的网络控件添加现有项目。
  • 为您的某个内容页面添加现有项目。

答案 1 :(得分:1)

根据我的经验,通常会在桩内的某处埋藏“真实”错误。虽然他们很难找到!

如果您确实认为自己存在循环构建问题,请尝试从项目中排除项目,直到您获得构建的内容,然后慢慢将其重新添加。如果您已经注意,可能需要注释方法或方法体在某些类之间得到了循环引用。

编辑以添加:

项目之间不允许循环引用,但在项目中你可以拥有它们(听起来就是你所拥有的)。它们相当普遍,构建过程通常可以应付。

你还声称有1500个错误 - 我认为Visual Studio停止计数大约200?无论限制在哪里,你都可能会遇到它。也许您的“真实”错误未显示在错误列表中。

答案 2 :(得分:1)

根据我的经验,将网站转换为WAP的大部分痛苦都归因于命名空间不匹配。检查您的母版页和使用它的页面是否在同一名称空间中。并验证aspx文件是否为Inherits属性中的代码隐藏文件引用了正确的命名空间。