2012-03-06 10 views
8

MVCとRazorについての私の知識は非常に基本的なものなので、私は何か簡単なことを望んでいます。基本的には、Controllersは正常ですが、Viewsフォルダは入れ子構造です。たとえば、代わりの:MVCをネストしたフォルダのビューをルックアップする方法

Views -> Index.cshtml 

Views -> BrandName -> Index.cshtml 

ように私はこの問題を回避するためのカスタムヘルパーを作成しているが、私はそれは、クエリ文字列のURLでどのように動作するかわからないんだけど?ここでは例として、コントローラである:

private DataService ds = new DataService(); 

    // 
    // GET: /Collections/ 

    public ActionResult Index() 
    { 
     return View(); 
    } 


    // 
    // GET: /Collections/Collection?id=1 
    public ActionResult Collection(int id) 
    { 
     var collectionModel = ds.GetCollection(id); 
     return View(collectionModel); 
    } 

しかし、どのように私は見にActionResult Collectionを得るのです:

public static string ResolvePath(string pageName) 
    { 
     string path = String.Empty; 
     //AppSetting Key=Brand 
     string brand = ConfigurationManager.AppSettings["Brand"]; 

     if (String.IsNullOrWhiteSpace(brand)) 
      path = "~/Views/Shared/Error.cshtml"; //Key [Brand] was not specified 
     else 
      path = String.Format("~/Views/{0}/{1}", brand, pageName); 

     return path; 
    } 
+0

不明。回避策がありますが(ほとんどの場合はうまくいきますが)代わりに非常に単純なコントローラを投稿していますか? –

+0

@HenkHoltermanおそらく自然に行う方法があるので、回避策を進めることはあまりありません。 – ediblecode

+0

@HenkHolterman質問がどうにかクリアされないのを見ないでください – ediblecode

答えて

12

使用:ここで

Views -> Brand2 -> Collection.cshtml 

は私が使っていた問題を回避する方法であります続く

public ActionResult Collection(int id) 
{ 
    var collectionModel = ds.GetCollection(id); 
    return View("/Brand2/Collection", collectionModel); 
} 

上記のコードは以下のビューを検索します。

~/Views/Brand2/Collection.aspx 
~/Views/Brand2/Collection.ascx 
~/Views/Shared/Brand2/Collection.aspx 
~/Views/Shared/Brand2/Collection.ascx 
~/Views/Brand2/Collection.cshtml 
~/Views/Brand2/Collection.vbhtml 
~/Views/Shared/Brand2/Collection.cshtml 
~/Views/Shared/Brand2/Collection.vbhtml 

または

public ActionResult Collection(int id) 
    { 
     var collectionModel = ds.GetCollection(id); 
     return View("~/Brand2/Collection.cshtml", collectionModel); 
    } 

今より直接的であるが、私はあなたがこの回答を使用することはありません、決して、決してすべきであることを警告する最初になりたいです。 MVCアプリケーションに固有の規則に従う必要があります。ファイルを既知の場所に配置することで、誰でもアプリケーションを理解しやすくなります。

+0

ありがとう、先生にもありがとう。 – ediblecode

+0

喜んで助けることができる – heads5150

+0

理想的ではありませんが、 – mdlars

関連する問題