我目前正在尝试将旧版项目从VS2013 / MVC3转换为使用VS2015 / MVC5,而且我遇到了一个问题,其中任何旧的ASPX视图(.aspx / .ascx)设置了强类型模型会导致构建错误。
我尝试过从头开始制作一个干净的项目,并且发生同样的错误,因此重现起来非常简单:
Views\Home
中创建.ascx文件。 (请注意,VS2015没有工具来创建这样的文件,因此您必须创建一个文本文件并重命名它。)它应该包含:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<TestClass>" %>
创建一个新的模型类(就像我对TestClass
所做的那样),或者使用项目中包含的一个预构建的Identity模型。
答案 0 :(得分:1)
用C#
ViewUserControl<TestClass>
编写的泛型类型声明必须进入C#
代码隐藏文件。否则,您必须指定CLR类型名称:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl`1[[MyWebApplication.Models.TestClass, MyWebApplication]]" %>
答案 1 :(得分:1)
事实证明,您需要确保web.config(您的项目的基本文件,或您的基本视图文件夹中的文件夹以及所有区域的文件)在其中具有以下内容:
<system.web>
...
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
...
</system.web>
在VS2015中创建的默认项目附带的web.config不包括这个,可能是因为他们假设(并且可能正确地)绿地项目不会使用Web窗体视图引擎。
我通过再次仔细检查ASP.NET MVC 4->5 upgrade docs找到了上述内容。