2011-07-18 14 views
0

私はASP.net MVCの初心者です。ASP.netからのダウングレード4 MVC 2からASP.net 3.5 MVC

サーバーの制限のためにプロジェクトをダウングレードしようとしています。

私はエラーの数を解決してきたが、今私が上でこの上で立ち往生しています:私はビルドする場合は、[OK]を構築し が、私はプレーを押したときに、私はこのエラーを取得:

Compiler Error Message: CS0246: The type or namespace name 'dynamic' could not be found (are you missing a using directive or an assembly reference?)

それは上の発生このライン:

私はおそらく私のビューのどこかに、このような由来すると考えてい

[System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]

Line 142: public class views_rooms_index_aspx : System.Web.Mvc.ViewPage, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler { Line 143:
Line 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と置き換えるには何が必要ですか?

答えて

1

あなたInherits属性:

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

は、ジェネリック型としてdynamic型を持つ - は正しいのViewModelタイプに変更します。例えば

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

dynamicキーワードは、.NET 4.0の中に導入し、それより以前のすべてのバージョンでは使用できません。

MVCのASP.NET 3.5でのデフォルトの基本クラスは、System.Web.Mvc.ViewPageで、ジェネリックタイプはありません。厳密に型指定されたモデル(コントローラからビューにデータを渡すときはいつでも推奨)を追加するには、ビューモデルクラスを作成し、dynamicをビューモデルの名前空間修飾名に置き換える必要があります。

例:コントローラのどこかから取得した文字列nameをホーム/インデックスビューに渡したいとします。次の操作を行います。

  1. (名前は重要ではありませんが、これは良いものです;)クラスHomeIndexViewModelを作成します)プロジェクトのModelsフォルダに、そしてそれをpublic string Name {get; set;}プロパティを与えます。
  2. あなたのコントローラでは、このクラスを突き止めて名前を設定します。過負荷のreturn View(model);を使用してビューに渡します。
  3. ビューを継承するSystem.Web.Mvc.ViewPage<YourProject.Models.HomeIndexViewModel>を作成します。ビューでModel.Nameを使用して名前にアクセスできるようになりました。
0

上記の回答はかなりうまくいきます。
あなたが使用して検討するかもしれない:
http://www.jetbrains.com/resharper/

私は私のウェブサイトは、Webアプリケーションに変換するためにそれを使用しているし、それは本当に役立ちます。

関連する問題