我正在尝试在新安装的Visual Studio Express 2012 RC中打开MVC3解决方案。到目前为止,我遇到的问题由于某种原因VS2012不知道项目是MVC项目,所以它不会添加视图/控制器。通过将以下GUID添加到解决方案中每个项目的ProjectTypeGuids
文件的.csproj
节点来实现此目的:
{E53F8FEA-EAE0-44A6-8774-FFD645390401}
但是,当我打开剃刀视图时,会显示这些错误(以及其他相关错误):
Error 20 The name 'model' does not exist in the current context c:\Users\willem\Documents\Visual Studio 2010\Projects\000-Orchard Development\src\Orchard.Web\Modules\EventManagement\Views\EditorTemplates\Parts\Event.cshtml 2 2 EventManagement
Error 21 The name 'T' does not exist in the current context c:\Users\willem\Documents\Visual Studio 2010\Projects\000-Orchard Development\src\Orchard.Web\Modules\EventManagement\Views\EditorTemplates\Parts\Event.cshtml 5 14 EventManagement
Error 22 'System.Web.WebPages.Html.HtmlHelper' does not contain a definition for 'LabelFor' and no extension method 'LabelFor' accepting a first argument of type 'System.Web.WebPages.Html.HtmlHelper' could be found (are you missing a using directive or an assembly reference?) c:\Users\willem\Documents\Visual Studio 2010\Projects\000-Orchard Development\src\Orchard.Web\Modules\EventManagement\Views\EditorTemplates\Parts\Event.cshtml 6 11 EventManagement
Intellisense正在剃刀视图中工作,但它只为Html帮助器方法提供了有限数量的字段。例如,没有像LabelFor和TextboxFor那样的特定于模型的方法。
我安装了MVC 3和4。该解决方案在VS2010中运行良好。
更新
在VS2012中添加新 MVC3项目时,它可以正常工作。这意味着它肯定与项目有关,而不是安装。
更新2: 我认为问题是视图无法访问根配置中引用的库:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<pages pageBaseType="Orchard.Mvc.ViewEngines.Razor.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
<add namespace="System.Linq"/>
<add namespace="System.Collections.Generic"/>
<add namespace="Orchard.Mvc.Html"/>
</namespaces>
</pages>
</system.web.webPages.razor>
它在运行时运行,但是intellilsense和错误控制台不会启动它
感谢任何帮助。
由于
答案 0 :(得分:3)
对我来说,通过添加以下内容解决了这个问题:
<add key="webpages:Version" value="1.0.0.0"/>
在我的根web.config的appSettings部分
e.g。
<appSettings>
<add key="webpages:Version" value="1.0.0.0"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
答案 1 :(得分:2)
检查此链接:
http://msdn.microsoft.com/en-us/library/hh266747(v=vs.110).aspx
确保您知道该项目是MVC3。 确保使用VS2010 SP1创建项目。
答案 2 :(得分:0)
我通过卸载MVC4 RC解决了这个问题。似乎与我的系统(或我测试的其他3个系统)兼容。只需要等待MVC4的发布版本
答案 3 :(得分:0)
您可以在同一台计算机上安装MVC3和MVC4,请在web.config
中进行配置,如下所示
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="1.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="1.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
答案 4 :(得分:0)
来自MVC 4 release notes:
必要的更新
在根Web.config文件中,添加一个包含密钥webPages:Version和值1.0.0.0的新条目。
在“解决方案资源管理器”中,右键单击项目名称,然后选择“卸载项目”。然后再次右键单击该名称并选择Edit ProjectName.csproj。
找到以下程序集引用: &LT;参考Include =“System.Web.WebPages”/&gt; &LT;参考Include =“System.Web.Helpers”/&gt;
用以下内容替换它们:
<Reference Include="System.Web.WebPages, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL "/>
<Reference Include="System.Web.Helpers, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
4.列表项
保存更改,关闭您正在编辑的项目(.csproj)文件,然后右键单击该项目并选择“重新加载”。