簡體   English   中英

母版頁引用其自身的屬性和成員時將無法編譯

[英]Master page won't compile when referencing its own properties and members

將基於asp.net WebForms的dotnet 網站升級到Web應用程序時,我在使用母版頁時遇到了麻煩。

我的母版頁的.aspx文件標記中包含如下引用:

<div>
   Name: <% =GetUserName() %>  Account: <% =AccountId %>
</div>

GetUserName()是在我的母版頁代碼隱藏文件中定義的受保護方法,而AccountId是同一位置的受保護字段。

完成Web App升級(涉及自動生成Site.Master.designer.cs隱藏文件以伴隨我自己的Site.Master.cs隱藏文件)之后,母版頁(而非代碼隱藏)的編譯開始失敗,從而拒絕受保護的對象。 <% =GetUserName() %>構造中的成員引用。 VS 2015 Intellisense表示GetUserName not defined in this context.

但是,VS2015上下文菜單中的“ 轉到定義...”項仍可用於有問題的受保護成員引用。 奇怪的。

當我從頭開始創建新的Web App項目時,它沒有這個問題。 我怎樣才能解決這個問題? 還是關於阻止這些受保護成員引用的升級網站項目有什么特別之處?

我想通了。

項目的順序在project.csproj ,從Web站點到Web App的轉換並不總是正確的。

要修復此問題,請關閉VS2015,然后使用文本編輯器打開project.csproj文件。 (它將為您的項目命名。)為您的母版頁代碼隱藏文件尋找<Compile...>標記。

然后確保用於編譯自己的代碼隱藏文件的標記位於.designer.cs代碼的標記之前 ,如下所示:

<Compile Include="Site.Master.cs">
  <DependentUpon>Site.Master</DependentUpon>
  <SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Site.Master.designer.cs">
  <DependentUpon>Site.Master</DependentUpon>
</Compile>

以我的經驗,這些標記在自動生成的.csproj文件中被廣泛分離。

無論如何,移動其中一個使其井然有序可以解決我的問題。

如果在IDE外部更改.csproj文件,請不要忘記在VS2015中清理和重建項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM