2012-02-01 18 views
10

私はMVC4を使い始めました。私が見ている最初のアクションメソッドには、何か新しいものがあります。私はインターネットをチェックアウトし、これについて何も見つけることができません:MVC4 - ContextDependentView - それはどういう意味ですか?

public ActionResult LogOn() 
     { 
      return ContextDependentView(); 
     } 

ContextDependentViewは何ですか?

何か新しいです。

答えて

11

ログイン操作と登録操作で、ViewまたはPartialViewアクションの結果を容易にすることが目的です。それは慣例によって行われるMVCで他のものと同様

private ActionResult ContextDependentView() 
    { 
     string actionName = ControllerContext.RouteData.GetRequiredString("action"); 
     if (Request.QueryString["content"] != null) 
     { 
      ViewBag.FormAction = "Json" + actionName; 
      return PartialView(); 
     } 
     else 
     { 
      ViewBag.FormAction = actionName; 
      return View(); 
     } 
    } 

Request.QueryString?content=xxxxが含まれている場合、ここでの大会は...、それは、アクション名に「JSON」を付加しますそれViewBagプロパティ詰めと部分を返します。ビューのバージョン。たとえば、

/Account/Login?content=testの要求はViewBag.FormAction = "JsonLogin";に解決され、部分的に返されます。そのフォームアクションは、説明のために非常に多くのViewBag.FormAction = "Login";

+0

おかげで残って

/Account/Loginの要求には、コンテンツのクエリ文字列を持っていません。 –

+1

これは実際にはこのコントローラのプライベートメソッドであるべきだと思いますか?どのコントローラーにも使えるようなものだと私には思われます。あなたはこの方法を自分で使いましたか?それを私的なものとして残しましたか? –

+0

正直言って、私はMVC4でプレイし始めたばかりです。私はこの方法が生産に行く前に変わるだろうと思う。もしあなたが好きであれば、それを独自の 'BaseController:Controller'クラスに移すこともできます。基本的なコントローラをプライベートまたはスタティックに置くのは、部分的なシナリオと完全なシナリオの両方のビューを作成することを義務付けているようです。私はそれをそのまま残し、その機能を試して、リリース候補(RC)のどこに行くのか見てみましょう。 –

関連する問題