从ASP.net 4 MVC 2降级到ASP.net 3.5 MVC

时间:2011-07-18 10:46:17

标签: asp.net asp.net-mvc-2

我是ASP.net MVC的初学者,并且在阅读一本书的同时构建了我的原始应用程序。

由于服务器的限制,我正在尝试降级项目。

我已经解决了一些错误,但现在我坚持这个: 如果我构建它构建正常,但是当我按下播放时,我收到此错误:

  

编译器错误消息:CS0246:找不到类型或命名空间名称“dynamic”(您是否缺少using指令或程序集引用?)

它出现在这一行:

  

[System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]

     

第142行:公共类views_rooms_index_aspx:System.Web.Mvc.ViewPage,System.Web.SessionState.IRequiresSessionState,System.Web.IHttpHandler {   第143行:
  144行:私有静态bool @__初始化;

我认为可能源自我的视图中的某个地方:

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

System.Web.Mvc.ViewPage是否只能在asp.net 4中执行?对于ASP.net 3.5,我需要用什么来替换它?

3 个答案:

答案 0 :(得分:2)

{4.0}中引入了dynamic关键字,并且在此之前的任何版本中都不可用。

我相信MVC与ASP.NET 3.5中的mvc视图的默认基类是System.Web.Mvc.ViewPage,没有任何泛型类型。如果要添加强类型模型(建议在将数据从控制器传递到视图时建议),则应创建视图模型类,并将dynamic替换为视图模型的名称空间限定名称

示例:您希望将从控制器中某处获得的字符串name传递到Home / Index视图。执行以下操作:

  1. 在项目的HomeIndexViewModel文件夹中创建一个类Models(名称无关紧要,但这是一个很好的;)),并为其提供public string Name {get; set;}属性。
  2. 在您的控制器中,确认此类并设置名称。使用return View(model);重载将其传递给视图。
  3. 让您的视图继承System.Web.Mvc.ViewPage<YourProject.Models.HomeIndexViewModel>。您现在可以在视图中使用Model.Name访问该名称。

答案 1 :(得分:1)

您的Inherits属性:

Inherits="System.Web.Mvc.ViewPage<dynamic>"

dynamic类型作为泛型类型 - 将其更改为正确的ViewModel类型。

例如:

Inherits="System.Web.Mvc.ViewPage<ProductViewModel>"

答案 2 :(得分:0)

上面的答案非常清楚 你可以考虑使用:
http://www.jetbrains.com/resharper/

我用它将我的网站转换为网络应用程序,这确实有帮助。