我正在向现有的ASP.NET Web Forms项目添加一些ASP.NET MVC页面。
我已经能够从我创建的MVC项目中移植一些模型,视图和控制器,并且它们工作得非常好。
但我想在我的项目中添加一些新的“强类型”视图,但我没有在我的Web窗体项目中获得新视图向导。
在定制Visual Studio方面,我有点新手,所以我可能会遗漏一些明显的东西。
答案 0 :(得分:4)
你可以用项目文件做一些黑客攻击。在WebForms项目文件中(将其作为普通文件打开)在ProjectTypesGuid节点下添加以下guid
{603c0e0b-db56-11dc-be95-000d561079b0};
然后添加对System.Web.Routing,Abstractions和MVC的引用,你应该好好去...
基本上它与此程序相反......
答案 1 :(得分:1)
我刚刚在CodeProject博客上找到答案:
http://www.codeproject.com/KB/aspnet/webformmvcharmony.aspx?msg=3161863#heading0009
它涉及手动编辑.csproj文件并将guid添加到项目类型列表中。
答案 2 :(得分:1)
就像John Foster说你必须手动编辑.csproj文件一样。但是,我需要一个不同的guid和一些额外的元素(至少对于Visual Studio 2012),否则我在Add-> View之后得到一个错误对话框,说“参数不能为null。参数名称为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>
确保Project \ PropertyGroup中存在以下元素:
< MvcBuildViews&GT假LT; / MvcBuildViews>
< FileUpgradeFlags>< / FileUpgradeFlags>
< UpgradeBackupLocation>< / UpgradeBackupLocation>
< TargetFrameworkProfile />
答案 3 :(得分:0)
新的View向导是ASP.Net MVC脚手架的一部分。您的项目需要从ASP.Net MVC项目模板创建才能获得此功能。
由于您将其添加到旧的ASP.Net项目(可能是使用Web应用程序或网站项目模板创建),因此您必须手动完成。
答案 4 :(得分:0)
当控制器方法的返回结果为 void 而非 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);
}