2015-06-08 20 views
2

我剛開始使用/將我的頭部圍繞MVC進行包裝,但我仍然對每個實際URL的位置感到困惑視圖被定義。到目前爲止,我有2個控制器和2個視圖。第一個控制器工作,並在URL http://localhost:60480/Example下創建正確的視圖,但我甚至不確定它實際定義了要在示例頁面上顯示的視圖的位置。我如何定義第二頁/視圖的URL,以便「Example」上的超鏈接可以使用第二個控制器加載第二個視圖?如何在使用ASP.NET MVC時設置新頁面/視圖的URL

基本上,我想在/ Example上創建一個超鏈接,它將帶我到/ Example2或其他頁面。任何建議/對MVC的幫助將不勝感激!

謝謝,我知道我的術語可能有點偏差,所以不要害怕糾正我!

回答

3

您將在App_Start中有一個名爲RouteConfig.cs的文件。這定義了URL和控制器/操作之間的關係。

如果沒有人改變了這一點,它看起來像:

 routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 

http://localhost/Example將匹配默認路由,設置控制器ExampleController。由於URI沒有任何操作,它將被設置爲默認操作「Index」。

因此,這將命中控制器ExampleController.cs方法「索引」

爲了讓你的第二個控制器,只需把控制器名稱(去掉「控制器」)中的網址:http://localhost/Example2將調用Index方法。爲了得到一個不同的方法/措施:http://localhost/Example2/ActionMethodOnController2

public class Example2Controller : Controller 
{ 
    public ActionResult ActionMethodOnController2() 
    { 
     ... 
     return View(); 

那麼這將給你相同的名稱,活動/方法的視圖。可能有不同的視圖命名,但不推薦。

在默認路由,它會根據Index.cshtml

被返回的觀點我想創建一個超鏈接

您可以使用HtmlHelpers來建立你的鏈接,例如:

@Html.ActionLink("Link Caption", ActionName, ControllerName) 
@Html.ActionLink("Link Caption", "ActionMethodOnController2", "Example2") 
+0

如果我有我的意見(視圖 - >例子 - > Example.cshtml,Example2.cshtml)的文件夾,會影響控制器能夠找到該視圖?我試圖去/ Example2,但它說「視圖'索引'或其主人沒有找到」,但我清楚地有一個索引方法,返回一個空白的視圖。 – EliteZalba

+0

你的問題提到了2個控制器,所以你的觀點是Views/Example1/Index.cshtml和Views/Example2/Index.cshtml。對於評論中的視圖,將一個方法添加到您的'ExamplesController'中,其名稱與視圖(minus .cshtml)相同,並使用我爲ActionMethodOnController2提供的代碼(即複製此+重命名)。你的url是http:// localhost/[controller]/[action] - 因此對於你評論中的兩個視圖,這需要是http:// localhost/Examples/Index(index是可選的,所以只適用於http: // localhost/Examples)和http:// localhost/Examples/Example2 –

+0

太棒了!非常感謝!如果您可以爲每個視圖創建一個新的方法,那麼有多少控制器可以做什麼? – EliteZalba

相關問題