2011-06-18 2 views
2

MVC 3アプリ(MSツールを使用してMVC 2から最近変換したもの)の一部のビューをascxからcshtml(Razor)に変換する作業を進めています。razorとaspxがきれいに再生するのに問題がある

単純に言えば、私はaspxマスターページから直接、剃刀の部分図のHtml.RenderPartialを実行しようとしています。 Razorパーシャルビューには、単に「Hello World」が入っています。@modelや@inheritsなどはありません。私のアプリケーションを実行すると、この時点で私は次のエラーが表示されます: "..... cshtmlのビューは、ViewPage、ViewPage、ViewUserControl、またはViewUserControlから派生しなければなりません。言い換えれば、それは非剃刀の眺めを探しているようです。

私が「@inherits ViewUserControl」を私の剃刀部分の上に明示的に配置すると、「... cshtml.Execute():オーバーライドするのに適切なメソッドが見つかりません」というエラーが発生します。

私は最初から新しいMVC 3アプリを作成し、同じことを最も簡単に試しました。剃刀部分にRenderPartialを行うaspxマスターページ。それはうまく動作します。しかし、この大きな毛深い既存のアプリは大きすぎて最初から始めることはできません。でもそこには何かが残っているからです。

これは他のいくつかの質問と重複しているように見えますが、私が見つけたものからすべてを試しました。私は私のマシンからMVC 2をアンインストールしました。提案/助けが大歓迎です!

は...

+1

私はいつも[手動](http://www.asp.net/learn/whitepapers/mvc3-release-notes#upgrading)で既存のすべてのASP.NET MVC 2アプリケーションをアップグレードしています。私は決して自動ツールを信頼しません。私はそれに何ら問題はなかった。このプロセスは簡単で簡単です。私が言うことができるのは、自分で試してみてください。 –

+0

ありがとうダーリン!私はそれを試してみる - 月曜日までそれにそれを得ることができないかもしれないが、私はあなたにそれがどのように行くかを知らせます。 :) – dizzwave

答えて

1

がここで自分の質問に答える:

デフォルトMVCプロジェクトは、ビューのフォルダ内のweb.configファイルでこのようなものを持っていますMVC 2アプリ(私は書いていない、btw)はWebFormViewEngineから派生したカスタムViewEngineを使用していました。私は部分ビューをかみそりに変換したときに、WebFormViewEngineを使用していることを認識せずに、そのクラスのロケーション配列に "〜/ Views/Shared/Modules/{0} .cshtml"を追加しました。

私は自分のViewEngineを作成しました。これはRazorViewEngine ...から派生し、代わりに私の/ Modulesパスを追加しました。できます!

新しく手動でMVC 3に変換すると、すべての手順を自分でやり直さなければならなかったので、このアプリケーションをMVC 3に役立てました(感謝しました)。

+0

意味がある - あなたがそれを追跡してうれしい! :-) –

2

ありがとう有意差があるかどうかを確認するために、2つのプロジェクトを比較してみ - 特にWeb.configファイルが(あまりにもcsprojで多分設定が)。ビュー/ページに使用される基本タイプのようなものはweb.configに格納されているため、それらが正しく設定されていないか、元のプロジェクトから抜けている可能性があります。

それは変わる..

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 

<pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
+0

ダニーありがとうございました - 私は実際にその事を既に確認しています。それはIntellisenseがRazorのために働くのを助けましたが、より大きな問題を解決しませんでした。私は手動でMVC2アプリを3に変換してやり直すつもりです。 – dizzwave

+0

それを聞いて申し訳ありません:(あなたがそれを稼働させることを望みました! –

+0

もう一度お返事ありがとうございます - それは*問題の一部であったので、私はあなたにupvoteを与えましたが、まあ、本当の問題について私の答えを見てください。 :) – dizzwave

関連する問題