8

我正在尝试在新安装的 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>

它在运行时执行,但智能感知和错误控制台不接受它

任何帮助表示赞赏。

谢谢

4

5 回答 5

3

对我来说,这个问题是通过添加解决的:

<add key="webpages:Version" value="1.0.0.0"/>

在我的根 web.config 的 appSettings 部分

例如

 <appSettings>
     <add key="webpages:Version" value="1.0.0.0"/>
     <add key="ClientValidationEnabled" value="true"/>
     <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
  </appSettings>
于 2012-08-07T19:30:42.137 回答
2

检查此链接:

http://msdn.microsoft.com/en-us/library/hh266747(v=vs.110).aspx

确保您知道该项目是 MVC3。确保该项目是使用带有 SP1 的 VS2010 创建的。

于 2012-07-11T15:51:45.173 回答
0

我通过卸载 MVC4 RC 解决了这个问题。似乎与我的系统(或我测试的其他 3 个系统)不兼容。只需要等待 MVC4 的发布版本

于 2012-07-17T14:33:14.527 回答
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>
于 2012-08-14T06:03:29.210 回答
0

从 MVC 4发行说明

所需更新

  1. 在根 Web.config 文件中,使用键 webPages:Version 和值 1.0.0.0 添加一个新条目。

  2. 在解决方案资源管理器中,右键单击项目名称,然后选择卸载项目。然后再次右键单击该名称并选择 Edit ProjectName.csproj。

  3. 找到以下程序集引用:< Reference Include="System.Web.WebPages"/> < Reference Include="System.Web.Helpers" />

将它们替换为以下内容:

<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) 文件,然后右键单击该项目并选择重新加载。

于 2012-08-28T16:08:59.967 回答