您將在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")
如果我有我的意見(視圖 - >例子 - > Example.cshtml,Example2.cshtml)的文件夾,會影響控制器能夠找到該視圖?我試圖去/ Example2,但它說「視圖'索引'或其主人沒有找到」,但我清楚地有一個索引方法,返回一個空白的視圖。 – EliteZalba
你的問題提到了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 –
太棒了!非常感謝!如果您可以爲每個視圖創建一個新的方法,那麼有多少控制器可以做什麼? – EliteZalba