我將一些ASP.NET MVC頁面添加到現有的ASP.NET Web窗體項目中。將ASP.NET MVC頁面添加到Web窗體項目時,如何獲得「添加 - >查看」菜單項?
我已經能夠從我創建的MVC項目中移植一些模型,視圖和控制器,並且他們工作得很好。
但我想爲我的項目添加一些新的「強類型」視圖,但我沒有在我的Web窗體項目中獲得新視圖嚮導。
當談到定製Visual Studio時,我有點新手,所以我可能會漏掉一些明顯的東西。
我將一些ASP.NET MVC頁面添加到現有的ASP.NET Web窗體項目中。將ASP.NET MVC頁面添加到Web窗體項目時,如何獲得「添加 - >查看」菜單項?
我已經能夠從我創建的MVC項目中移植一些模型,視圖和控制器,並且他們工作得很好。
但我想爲我的項目添加一些新的「強類型」視圖,但我沒有在我的Web窗體項目中獲得新視圖嚮導。
當談到定製Visual Studio時,我有點新手,所以我可能會漏掉一些明顯的東西。
您可以對項目文件進行一些破解。在您的WebForms項目文件中(將其作爲普通文件打開),請在ProjectTypesGuid節點下添加以下guid:
{603c0e0b-db56-11dc-be95-000d561079b0};
然後添加引用System.Web.Routing,抽象和MVC,你應該是好去...
基本上它是這個過程的逆...
新視圖嚮導是ASP.Net MVC腳手架的一部分。您的項目需要從ASP.Net MVC項目模板創建,以獲得此功能。
由於您將它添加到舊的ASP.Net項目中,可能是使用Web應用程序或網站項目模板創建的,您必須手動完成。
我只是發現了CodeProject上博客了答案:
http://www.codeproject.com/KB/aspnet/webformmvcharmony.aspx?msg=3161863#heading0009
它涉及手動編輯.csproj文件並在項目類型列表中添加一個guid。
我也看到了這一點,當你的控制器方法具有無效返回結果,而不是的ActionResult
//Right click and the context menu will NOT show "Add View"
public void Details(int id)
{
Dinner dinner = dinnerRepository.GetDinner(id);
if (dinner == null)
return View("NotFound");
else
return View("Details", dinner);
}
//Right click and the context menu will show "Add View"
public ActionResult Details(int id)
{
Dinner dinner = dinnerRepository.GetDinner(id);
if (dinner == null)
return View("NotFound");
else
return View("Details", dinner);
}
就像約翰·福斯特說,你必須手動編輯.csproj的文件。但是,我需要一個不同的GUID和一些額外的元素(至少對於Visual Studio 2012),否則我會在添加 - >視圖之後出現錯誤對話框,其中顯示「參數不能爲空參數名稱path1」。下面是我所做的:
加{E3E379DF,F4C6-4180-9B81-6769533ABE47 }; Project \ PropertyGroup \ ProjectTypeGuids。礦看起來像:
< ProjectTypeGuids> {E3E379DF-F4C6-4180-9B81-6769533ABE47}; {349c5851-65df-11DA-9384-00065b846f21}; {fae04ec0-301f-11D3-bf4b-00c04f79efbc} </ProjectTypeGuids>
確保以下元素在項目\的PropertyGroup存在:
<MvcBuildViews>假</MvcBuildViews >
<FileUpgradeFlags> </FileUpgradeFlags >
< UpgradeBackupLocation> </UpgradeBackupLocation>
< TargetFrameworkProfile />