2010-02-07 130 views
1

我正在使用Visual Studio 2008 SP1和ASP.NET MVC v1。右鍵單擊視圖時,我不會看到「轉換爲Web應用程序」選項,我需要在.cs類後生成代碼。我看到了實際項目和文件夾的選項,但不是視圖(aspx文件)。我已檢查了ProjectTypeGuids以具有「正確」(?)值:Visual Studio中缺少ASP.NET MVC「轉換爲Web應用程序」選項

{603c0e0b-db56-11dc-be95-000d561079b0}; {349c5851-65df-11da-9384-00065b846f21}; {fae04ec0-301f- 11d3-bf4b-00c04f79efbc}

任何其他建議,我可以找什麼?

謝謝。

(我知道用身後MVC類代碼的設計含義)

附:要手工做的這一切,你需要做的是:

  1. 添加文件具有相同的名稱作爲您的視圖和的.cs(或.vb)擴展,例如Index.aspx.cs。確保你修改你的類繼承自System.Web.Mvc.ViewPage或其他一些繼承自它的類。
  2. 編輯aspx文件並添加到@Page指令CodeBehind =「Index.aspx.cs」並更改繼承「MyNamespace.Views.Home.Index」(顯然,您需要在其後面有命名空間) 。
  3. 右鍵單擊aspx文件並選擇轉換爲Web應用程序。這將創建設計文件並修改.cs類並將其標記爲「部分」。
+0

正在尋找'a'來達到此目的嗎?還是僅僅在'工具'之後? – ziya 2010-02-07 00:10:32

+0

@Maxwell:我正在尋找一種方法來「修復」Visual Studio以恢復該功能。我可以手動建立文件,但這是很多工作,imo。謝謝。 – pbz 2010-02-07 00:19:18

+0

有人可以解釋爲什麼對這篇文章的否定投票?謝謝。 – pbz 2010-02-07 00:32:10

回答

5

「轉換爲Web應用程序」是項目/文件級命令。您不能在單個ASPX文件中使用它。

此外,沒有其他自動化方法(我知道:-))將代碼隱藏文件添加到ASPX文件。你必須手動完成,通過自己添加相關文件,然後將它們添加到.csproj中。

+0

我以前用過MVC,甚至ScottGu在他的回覆中提到:http://weblogs.asp.net/scottgu/archive/2007/12/06/asp-net-mvc-framework-part -3-passing-viewdata-from-controllers-to-views.aspx#5441681 '只需在解決方案資源管理器中選擇您的文件,右鍵單擊並選擇「轉換爲Web應用程序」上下文菜單選項。這會爲你生成.designer文件。' 要麼MVC模板更改爲不再可能或者我的安裝已損壞(我確實重新安裝了VS)。 謝謝。 – pbz 2010-02-07 06:16:14

+0

P.S.現在我想到了這一點,可能是其中一個RC,而不是最終版本(1.0),雖然我不記得確切。難道是因爲他們刪除了MVC模板中的.cs文件的創建,並且因爲沒有.cs文件,所以沒有「轉換爲Web應用程序」選項(它只會生成.designer.cs文件)?出於某種原因,我記得能夠右鍵點擊一個aspx文件,選擇該選項,VS會爲我生成這兩個文件;也許我記得它錯了... – pbz 2010-02-07 06:27:12

+0

是的,那是在版本1的預覽版5中。它從那以後發生了巨大的變化。 :-) – 2010-02-07 14:22:31

4

MVC開發模型不需要背後的代碼。

讀好博客帖子在此Here

+0

就像我在最後一句中提到的,我意識到這些設計含義(即辯論)。這篇文章不是重複這些論點。謝謝。 – pbz 2010-02-07 00:24:33

5

有沒有必要使用「代碼隱藏」在ASP.NET MVC。

如果您使用'後臺代碼',那麼您不會遵循ASP.NET MVC的約定。

問題是,爲什麼你想要一個代碼隱藏?回答這將幫助我們確定你真正需要的東西。

如果你真的想這樣做,你可以將Webforms和ASP.NET MVC混合在一起。有很多這方面的資源,但是here's just one

+0

我正在尋找避免與視圖相關的代碼胡說我的看法。例如,某些控件被設計爲使用需要處理功能的事件。我不希望所有這些東西都與實際的HTML混合在一起。謝謝。 – pbz 2010-02-07 00:28:28

+0

你不應該在ASP.NET MVC中使用ASP.NET服務器控件,因爲它們耦合了控制器和視圖。爲什麼使用ASP.NET MVC如果你不符合它的優勢? – 2010-02-07 00:29:52

+2

因爲我想重用一些控件,而不是以MVC方式重建它們。這些特定的控件不以任何方式與控制器耦合。 – pbz 2010-02-07 00:34:19

0

如果你想重用一些控件,也許一個好方法是在輔助方法內創建和渲染它們,並從視圖中調用該方法。

我正想着會是這樣的:

public static string HelperMethod(param_list) 
{ 
    var control = new ControlType(); 
    //set up control properties according to param_list 

    //get the html as string - one way to do it would be like this 
    StringWriter stringWriter = new StringWriter(); 
    HtmlTextWriter htmlWriter= new HtmlTextWriter(stringWriter); 
    control.RenderControl(htmlWriter); 
    string result= stringWriter.ToString(); 
} 

再從這樣的觀點稱之爲:

<%= HelperClass.HelperMethod(params) %> 

我不知道,如果這種方法將工作,我不知道這是否合理。這不僅僅是一種適當的解決方案。我之前沒有做過這樣的事情,只是一個想法,試着看看它是否對你有幫助。您還應該記住,ASP.NET控件通常使用ViewState進行狀態管理,並且ASP.NET MVC中沒有這樣的事情。

相關問題