我正在通过创建一个新的ASP.Net Mvc 5骨架来升级网站,然后放入内容。
目前所有似乎都在工作,除了强类型视图。所有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; }
怎么选错了项目?
该项目是作为MVC4项目创建的,然后在添加任何代码之前使用nuget升级到MVC5。
答案 0 :(得分:2)
可悲的是,似乎ASP.NET MVC 5的Nuget包没有处理所需的web.config和代码更改以支持ASP.NET MVC 5中的所有内容。看看http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2这应该可以帮助您完成Nuget包未涵盖的所需手动升级步骤。
答案 1 :(得分:1)
对我来说,我在我的View/web.config
中特别错过了这个,因为默认配置假定剃刀。
<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>