簡體   English   中英

具有“詳細子級”的主視圖/詳細視圖的ASP.NET MVC路由

[英]ASP.NET MVC Routing for Master / Detail Views with “Detail Children”

我有基本的“主視圖/詳細視圖”,可以很好地與默認的ASP.NET MVC路由配合使用; 但是我想建立一些像這​​樣的URL:

/Class/Details/5 -- General Detail view [Working]

我不確定的是什么(而且我不受這種URL格式的束縛,只是大致等同)。

/Class/5/Details/Logs -- Detail View with Logs
/Class/5/Details/Status -- Detail View with current Status

另一種表達方式是這樣的:

/{controller}/{id}/{controllerSpecificMaster}/{action}/

我要避免的是,使我的Views \\ Class目錄雜亂無章,而這些視圖基本上都是Details視圖的派生類。

我在ASP.NET MVC 1和.NET 3.5 SP1上。

您要做的第一件事就是路線。 您可能已經完成了此操作,但是如果您還沒有這樣做,則下面的路由條目將處理您的自定義路由需求:

routes.MapRoute("Master_Detail",
                "{controller}/{id}/{controllerSpecificMaster}/{action}",
                new { controller = "Class", 
                      action = "Index", 
                      id = UrlParameter.Optional,
                      controllerSpecificMaster = "Details"
                });

然后,在要使用路由指定的母版頁的操作方法中,只需在方法參數中包含route鍵,然后將其傳遞給視圖:

public ActionResult Logs(int id, string controllerSpecificMaster)
{
    //do something

    //return view with master name as argument
    return View("Logs", controllerSpecificMaster);
}

如果您必須做很多事情,我建議您創建一個自定義視圖引擎並覆蓋FindView()方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM