首先我們來梳理下邏輯;
例如:
建立了一個名為lanmu(欄目)的控制器,
控制器下面有個index的Action(方法),
我們在方法上添加一個視圖後,該視圖對應的是控制器lanmu下面的index方法;
但是我們在實際操作的時候,直接return View()後找的就是目前的方法名字為和視圖名字一緻的視圖;(好像有點繞,多讀幾遍,就了解了--哈哈~!)
但是
如果我們這樣寫return View(“list”),
位址欄輸入:http:xxx.xxx.com/lanmu/index/
它跳轉的其實是視圖檔案夾為“lanmu”下的“list”視圖檔案,如果“list”視圖綁定有“list”控制器的“變量”,在這樣的跳轉視圖後,“list”視圖上的“變量值”是空的。
由此我們實驗得出:
視圖和控制器其實是獨立的存在的。那麼,我們就可以讓一個控制器的Action(方法)去渲染一個或者多個視圖;
這裡有個前提條件就是視圖檔案必須是在:
視圖檔案夾/控制器名一緻的名字/
或者
視圖檔案夾/Shared/
的檔案夾裡面就行
代碼:
我這裡用到了特性路由,是以,在測試代碼的時候,你也必須開啟特性路由
【必須】啟用路由特性映射
MVC5可以通過路由配置檔案(App_Start/RouteConfig.cs)增加下面代碼
routes.MapMvcAttributeRoutes();
控制器代碼
視圖代碼
news視圖代碼
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>news</title>
</head>
<body>
<h1>【news】</h1>
<h1>@ViewBag.id</h1>
</body>
</html>
Product視圖代碼
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Product</title>
</head>
<body>
<h1>【Product】</h1>
<h1>@ViewBag.id</h1>
</body>
</html>
結果
輸入:http://localhost:51598/news/6
輸入:http://localhost:51598/news/
輸入:http://localhost:51598/product/
輸入:http://localhost:51598/product/10086
項目截圖