2017-05-22 53 views
2

我有一個VS和C#平庸的技能水平。我試圖在代碼隱藏中將一個.ascx文件添加到用戶控件中的現有項目中。項目類型不允許添加新的「Web用戶控件」

右鍵單擊UserControls - > Add - > New Item並搜索「web用戶控件」返回「找不到項目」。

複製粘貼現有的.ascx文件(有十幾個)可以成功創建新的.ascx文件,但沒有附加.ascx.cs或.ascx.designer.cs文件,也沒有明顯的添加方式他們。

更多信息

複印「MyUserControl.ascx」確實複製代碼隱藏文件,但他們原來的「MyUserControl.ascx」下的文件被複製爲「的MyUserControl - Copy.ascx.cs」和「 「MyUserControl - Copy.ascx.designer.cs」。VS不允許這些文件被重命名或移動

所以,我從項目中刪除了這些文件,在文件資源管理器中更改了它們的名稱,將它們添加回項目並根據需要更新了代碼

但是, t出現嵌套,但與.ascx文件處於同一級別。

也試過

創建一個空的Web應用程序,並可以增加它在那裏,所以它的一些具體項目。

嘗試添加的文件,如文件瀏覽器複製後現有的,以意向生成的文件後面的代碼 - 有沒有轉換爲Web應用程序選項,在VS2015的項目菜單下直接甚至選擇的解決方案,即使我的項目,如建議通過How do you force Visual Studio to regenerate the .designer files for aspx/ascx files?

+1

您不能只複製和更改文件上的名稱。類和名稱空間仍然以原始名稱命名,您不應編輯生成的代碼。我真的懷疑這會有所作爲,但如果您搜索項目模板的「Web窗體用戶控制」而不是? – Crowcoder

+0

@Crowcoder仍然沒有找到任何東西,這讓我覺得奇怪 –

回答

3

現在,我已經發布了一個賞金...

一旦項目(的.ascx,.ascx.cs和.ascx.designer.cs文件)已添加到項目中並更新其內容以反映所需的更改(Codebehind屬性,類名稱等),只需編輯項目的.projitems文件即可噸(我用記事本+ +這個,不知道它是否重要)。

你會發現,像這樣兩行 - 搜索你的文件名來容易地發現:

<Compile Include="$(MSBuildThisFileDirectory)MyPath\UserControls\MyUserControl.ascx.designer.cs" /> 
<Compile Include="$(MSBuildThisFileDirectory)MyPath\UserControls\MyUserControl.ascx.cs" /> 

如果你有,你會發現它們有一個依賴於節點的其它類似的文件。添加此節點,並重新加載在VS會得到你所需要的:

<Compile Include="$(MSBuildThisFileDirectory)MyPath\UserControls\MyUserControl.ascx.cs" > 
    <SubType>ASPXCodeBehind</SubType> 
    <DependentUpon>MyUserControl.ascx</DependentUpon> 
</Compile> 
<Compile Include="$(MSBuildThisFileDirectory)MyPath\UserControls\MyUserControl.ascx.designer.cs" > 
    <DependentUpon>MyUserControl.ascx</DependentUpon> 
</Compile> 
+0

有一個方便的VS擴展叫做「嵌套物品」,它允許你在解決方案資源管理器中嵌入文件(你手中是這樣的),但通過UI。 #推薦的 –

1

這聽起來像這裏的主要問題是,你無法添加Web使用Visual Studio表格用戶控制器,所以我會嘗試解決。

我認爲這是您已經在尋找的內容,但這是我想要添加新的Web窗體用戶控件時的操作。我在解決方案資源管理器中右鍵單擊,進入添加,然後單擊Web窗體用戶控件。 enter image description here

但是,我認爲這不適用於您。因此,當我在Solution Explorer中右鍵單擊時,我將看到的下一個地方是選擇「New Item」。然後,在新添加的新項目對話框中,我將轉到Visual C#=> Web => Web窗體用戶控件。 enter image description here

如果這兩件事情不是選項,那麼我會檢查是否已將其他Web組件安裝到Visual Studio中。它看起來不像你說的是哪個版本的Visual Studio,所以我將假定它是Visual Studio 2017.打開Visual Studio 2017安裝程序,然後單擊修改按鈕。選擇ASP.NET和Web開發。這些組件應該爲您提供模板選項。即使你不是在談論VS17,以前的Visual Studio安裝程序也是類似的 - 修改你的安裝並添加Web組件。

enter image description here

最後,特別是如果你有在其他項目提供給您的選項,但不是這一個,我碰巧知道Visual Studio將隱藏選項/模板不符合您的項目類型。在您最喜歡的文本編輯器(顯然是NotePad ++)中打開項目的.csproj文件並轉到第13行,您應該在其中找到以分號分隔的ProjectTypeGuids列表。在我的例子中,我有兩個:349c5851-65df-11da-9384-00065b846f21和fae04ec0-301f-11d3-bf4b-00c04f79efbc。第一個代表ASP.NET MVC 5.後者代表C#。第一個guid是Visual Studio認爲這是一個Web項目的原因。項目類型GUID列表可用hereenter image description here

相關問題