2012-05-09 29 views
0

私はASP.NET Web Forms APPを使用しています。これを一度に1つずつASP.NET MVCに移行したいと考えています。私はwebformsアプリケーション内で実行するためのセットアップMVCを持っています。私はすべてその適切な設定している私はViewResult ASP.NET WebFormsプロジェクトのコンテンツASP.NET MVCを使用したプロジェクト

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); 
    routes.MapRoute("Default", // Route name 
     "w/{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
    ); 
} 

protected void Application_Start() 
{ 
    RegisterRoutes(RouteTable.Routes); 
} 

に私のグローバルasax中のすべてを私のルートをプロジェクトにMVCと呼ばれるサブフォルダに私のASP.NET MVCフォルダ(コントローラ、ビュー)を入れて、設定している場合設定およびアセンブリ参照が設定されます。私がデバッグするなら、私のホームコントローラのIndexメソッドの中にあるブレークポイントを打つことができます。

public class HomeController 
    : Controller 
{ 
    public ActionResult Index() 
    { 
     this.HttpContext.Trace.Write("Hrm..."); 
     return View("index", (object)"Hello"); 
    } 
} 

発生している問題は

return View("index", (object)"Hello"); 

は、エラーステータスコードまたはMVCビューを見つけることができない場合は、一般的に期待する検索リストを返さないことです。代わりに、私は200のHTTPレスポンスを取得しており、レスポンスのコンテンツ本体には何もありません。ここで

は、httpリクエストの詳細は以下のとおりです。上記の要求

GET http://localhost.:2396/w/home/index2 HTTP/1.1 
Accept: */* 
Accept-Language: en-us 
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8; InfoPath.2; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E) 
Accept-Encoding: gzip, deflate 
Connection: Keep-Alive 
Host: localhost.:2396 
Pragma: no-cache 
Cookie: ASP.NET_SessionId=3yqf2t55sckemhmxq2bhibmq 

HTTP/1.1 200 OK 
Server: ASP.NET Development Server/9.0.0.0 
Date: Wed, 09 May 2012 12:42:43 GMT 
X-AspNetMvc-Version: 2.0 
Cache-Control: private 
Content-Length: 0 
Connection: Close 

は存在せず、それは私にエラーを与えない行動である、INDEX2に進みます。インデックスアクションのViewResultが例外をスローしていると思われますが、どういうわけか、どこかに落ち込んでしまいました。私はこのコードベースを継承したので、何が起こっているのか理解しようとしています。私はすべてのエラーメッセージが表示されるはずですが、HTTPステータスコードは常に200

<customErrors mode="Off"/> 

<httpErrors errorMode="DetailedLocalOnly"/> 
である理由はまだ説明していないようなエラー処理を設定したweb.configファイルで

もう一つの簡単なメモは、私が

return View("index", (object)"Hello"); 

return Content("abc"); 

それは意志と交換した場合でありますhttp応答のコンテンツ本文に「abc」を正しく出力します。

アイデア?

+0

クイックQ:View()を返すかView( "index")を返すとどうなりますか? –

+0

私はもう一度やり直してみましたが、すべて同じ結果があります。 –

答えて

2

あなたがそのコントローラについて言及したため、あなたのビューの位置が間違っているようです。ビューは「MVC」というフォルダの下にあります。

"Views"フォルダは、ViewEngineがビューを探す場所であるルートディレクトリの下にある必要があります。

更新: このデフォルト動作は、カスタムViewEngineを使用して変更できます。そのためには、IViewEngineインターフェイスを実装し、別の場所をスキャンする独自のロジックを実装できるFindViewというメソッドがあります。

+0

true ...しかし、彼はysodにビューを見つけないと不平を言うように思える。 –

+0

ha!ありがとう。私はこれを試したことを誓ったが、以前はそれを修正しなかった。しかし、今回私がそれらを移転したとき、それは働いた。私は、それらをMVCサブフォルダに再配置するためにエリア登録を使用できると仮定しています。ちょうど私がそれをどのように設定するかについていくつかの研究をする必要があります。 –

+0

@andrewええ、私はINDEX2を呼び出すことによって示されたようにYSODを見ていません。それでも理由は分かりません。 –

関連する問題