C# 将MVC4混合到现有ASP.NET Webforms项目中,现在强类型视图不';我无法识别模型的类型

C# 将MVC4混合到现有ASP.NET Webforms项目中,现在强类型视图不';我无法识别模型的类型,c#,asp.net,asp.net-mvc-4,webforms,C#,Asp.net,Asp.net Mvc 4,Webforms,我正在尝试将MVC4功能添加到现有的webforms项目中。我遵循了这些文章中概述的步骤: 我的场景和提供的所有示例之间的主要区别在于,我并没有试图用Razor实现这一点。我很高兴我的观点是老派的Aspx 到目前为止,路由方面工作得很好,正确的控制器按预期运行。我可以成功地将内容放入ViewData并在适当的视图中使用它。在强输入视图之前,一切都很顺利 当我尝试创建强类型视图时,出现以下错误消息: “'object'不包含'someProperty'的定义…” 下面是一个无法按预期工作的测

我正在尝试将MVC4功能添加到现有的webforms项目中。我遵循了这些文章中概述的步骤:

我的场景和提供的所有示例之间的主要区别在于,我并没有试图用Razor实现这一点。我很高兴我的观点是老派的Aspx

到目前为止,路由方面工作得很好,正确的控制器按预期运行。我可以成功地将内容放入ViewData并在适当的视图中使用它。在强输入视图之前,一切都很顺利

当我尝试创建强类型视图时,出现以下错误消息:

“'object'不包含'someProperty'的定义…”

下面是一个无法按预期工作的测试视图示例:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/MVC.Master" Inherits="System.Web.Mvc.ViewPage<TDS.Domain.Entities.SomeEntity>"  %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">

<h2> <%= Model.someProperty%></h2>
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="head" runat="server">
</asp:Content>
我把它塞进了可视包,就像这样:

ViewBag.Model = retVal;
<% var Model = (WhateverType)ViewBag.Model; %>
然后在视图的最顶端访问它,如下所示:

ViewBag.Model = retVal;
<% var Model = (WhateverType)ViewBag.Model; %>

web.config中可能缺少一些关键的MVC程序集:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>


可能有点奇怪,但我在为MVC和WebForms项目添加了marging之后也遇到了同样的问题,解决方案就是重新启动VisualStudio。在那之后,它开始工作。这可能是解决方案,将Razor页面附加到我这里。您演示的视图不是Razor视图引擎语法,而是一个。您需要为您给出示例的视图提供控制器代码。还可以从web配置运行时->assemblybinding->dependentassembly->所有assemblyIdentity和bindingredirect节点提供以下值。如我的OP中所述:“我的场景和提供的所有示例之间的主要区别在于,我并没有试图用Razor实现这一点。我很高兴我的观点是老派的Aspx。“我从另一个MVC4解决方案中复制了这些,它成功了!System.Web.WebPages.Razor,System.Web.WebPages.Deployment,System.Web.RazorOne最后一句话,我发现这是违反直觉的,因为我没有尝试在这个项目的任何地方使用Razor,但似乎在Web配置中添加这些程序集解决了这个问题。这种行为确实非常奇怪。
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>