【问题标题】:Downgrading from ASP.net 4 MVC 2 to ASP.net 3.5 MVC从 ASP.net 4 MVC 2 降级到 ASP.net 3.5 MVC
【发布时间】:2011-07-25 15:51:08
【问题描述】:

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

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

我已经解决了一些错误,但现在我被困在这个问题上: 如果我构建它构建好的,但是当我按下播放时,我得到这个错误:

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

它出现在这一行:

[System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]

第 142 行:公共类 views_rooms_index_aspx:System.Web.Mvc.ViewPage、System.Web.SessionState.IRequiresSessionState、System.Web.IHttpHandler { 第 143 行:
第 144 行:private static bool @__initialized;

在我看来,这可能源于这样的地方:

<%@ 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,我需要用什么替换它?

【问题讨论】:

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


    【解决方案1】:

    dynamic 关键字是在 .NET 4.0 中引入的,在此之前的任何版本中都不会提供。

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

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

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

    【讨论】:

      【解决方案2】:

      您的Inherits 属性:

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

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

      例如:

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

      【讨论】:

        【解决方案3】:

        上面的答案很好地涵盖了它。
        您可以考虑使用:
        http://www.jetbrains.com/resharper/

        我用它来将我的网站转换为网络应用程序,它真的很有帮助。

        【讨论】:

          猜你喜欢
          • 2011-07-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-30
          • 2017-05-08
          • 2011-02-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多