Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mvc 5视图页<;T>;编译时变为非通用视图页_C#_Asp.net Mvc_Asp.net Mvc 5 - Fatal编程技术网

C# Mvc 5视图页<;T>;编译时变为非通用视图页

C# Mvc 5视图页<;T>;编译时变为非通用视图页,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,我正在升级一个网站,创建一个新的ASP.NETMVC5框架,然后插入内容。 目前,除强类型视图外,所有视图似乎都正常工作。所有Model属性访问失败,显然使用了非通用控制器 示例: <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MySite.Models.MyViewModel>" %> <asp:Conten

我正在升级一个网站,创建一个新的ASP.NETMVC5框架,然后插入内容。 目前,除强类型视图外,所有视图似乎都正常工作。所有
Model
属性访问失败,显然使用了非通用控制器

示例:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MySite.Models.MyViewModel>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
    <h1><%= Model.Title %></h1>
</asp:Content>

我发现错误“object”不包含“Title”的定义,并且没有扩展方法

转到模型的定义,我将看到:

namespace System.Web.Mvc
{
    // Summary:
    //     Represents the properties and methods that are needed to render a view as
    //     a Web Forms page.
    [FileLevelControlBuilder(typeof(ViewPageControlBuilder))]
    public class ViewPage : Page, IViewDataContainer
    {
        <snip>
        public object Model { get; }
namespace System.Web.Mvc
{
//总结:
//表示将视图渲染为所需的属性和方法
//网页形成网页。
[FileLevelControlBuilder(typeof(ViewPageControlBuilder))]
公共类视图页面:页面,IViewDataContainer
{
公共对象模型{get;}
为什么它选择了错误的项目


该项目是作为MVC4项目创建的,然后在添加任何代码之前使用nuget升级到MVC5。

遗憾的是,ASP.NET MVC 5的nuget软件包似乎没有处理所需的web.config和代码更改,以支持ASP.NET MVC 5中的所有内容。请查看哪些软件包可以帮助您执行所需的手动升级步骤Nuget软件包没有涵盖这一点。

对于我来说,我在我的
视图/web.config
中特别遗漏了这一点,因为默认配置为razor

  <system.web>
    <compilation>
      <assemblies>
        <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
    </compilation>

    <pages pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, 
       Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
           pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, 
       Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
       userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, 
       Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
           >
      <namespaces>
        <add namespace="System.Web.Mvc"/>
        <add namespace="System.Web.Mvc.Ajax"/>
        <add namespace="System.Web.Mvc.Html"/>
        <add namespace="System.Web.Routing"/>
      </namespaces>
    </pages>
  </system.web>


根据,
对象一直被使用。您是否遵循了上的升级步骤?我不知道Nuget包是否可以为您完成所有的web.config工作。@StevenV该类也有一个通用版本。我将查看该文档,谢谢!我以为该类有通用版本,但我找不到它ht离开。祝你好运!@StevenV这两个web配置中的手动配置步骤和web api注册都丢失了。如果你将其添加为真实答案,我会将其标记为解决方案。谢谢!