Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC更改URL路由_C#_Asp.net Mvc_Url_View_Asp.net Mvc Routing - Fatal编程技术网

C# MVC更改URL路由

C# MVC更改URL路由,c#,asp.net-mvc,url,view,asp.net-mvc-routing,C#,Asp.net Mvc,Url,View,Asp.net Mvc Routing,我刚刚在ASP.NET MVC 3中观看了关于URL路由的Pluralsight视频。我还是有点困惑 该图显示了如何设置我的视图。每个视图都有一个控制器。也许我误解了什么,但当我这么做的时候,我想通过添加公文包视图和控制器,而不是去/home/Portfolio,它只会把我带到/Portfolio,但事实并非如此。现在,当我点击公文包链接时,它会将我带到/portfolio/portfolio 我是否误解了ASP.NET中路由的工作方式,或者我只是忘记了什么?将操作和视图重命名为索引。将操作和

我刚刚在ASP.NET MVC 3中观看了关于URL路由的Pluralsight视频。我还是有点困惑

该图显示了如何设置我的视图。每个视图都有一个控制器。也许我误解了什么,但当我这么做的时候,我想通过添加公文包视图和控制器,而不是去/home/Portfolio,它只会把我带到/Portfolio,但事实并非如此。现在,当我点击公文包链接时,它会将我带到/portfolio/portfolio


我是否误解了ASP.NET中路由的工作方式,或者我只是忘记了什么?

将操作和视图重命名为索引。

将操作和视图重命名为索引。

您需要转到
公文包/公文包
,因为这就是您命名设置的方式。第一个是控制器的名称(名称中没有控制器)
PortfolioController
。第二个是
ActionResult
Portfolio
的名称,它返回
Portfolio.cshtml
。如果您只想查看
/Portfolio
,您可以随时使用
PortfolioController
使用

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

然后将
Portfolio.cshtml
重命名为
Index.cshtml
,您就可以开始了。

它会将您带到
Portfolio/Portfolio
,因为这就是您命名设置的方式。第一个是控制器的名称(名称中没有控制器)
PortfolioController
。第二个是
ActionResult
Portfolio
的名称,它返回
Portfolio.cshtml
。如果您只想查看
/Portfolio
,您可以随时使用
PortfolioController
使用

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

然后将
Portfolio.cshtml
重命名为
Index.cshtml
,你就可以开始了。

当你有localhost/Portfolio时,你将调用默认的Portfolio操作,默认情况下,该操作将被索引,你将看到该视图,因为你没有该视图,你可以创建一个 您可以通过/portfolio/portfolio在您的portfolio controller中访问您的portfolio操作

因为它遵循app_start文件夹中routConfig.cs中的默认路由

如果您只想通过/portfolio获得与/portfolio相同的/portfolio/portfolio结果,您可以在routeconfig中添加类似的路由

 routes.MapRoute(
            name: "portfolio",
            url: "portfolio/{action}",
            defaults: new { Controller = "portfolio", Action = "portfolio" }
            );
注意在默认路由之前写入,因为当它匹配第一个路由时,它不会检查其他路由


抱歉,我的英语不好

当您有localhost/portfolio时,您将调用默认的portfolio操作,默认情况下,该操作将被索引,您将看到该视图,因为您没有该视图,您可以创建一个 您可以通过/portfolio/portfolio在您的portfolio controller中访问您的portfolio操作

因为它遵循app_start文件夹中routConfig.cs中的默认路由

如果您只想通过/portfolio获得与/portfolio相同的/portfolio/portfolio结果,您可以在routeconfig中添加类似的路由

 routes.MapRoute(
            name: "portfolio",
            url: "portfolio/{action}",
            defaults: new { Controller = "portfolio", Action = "portfolio" }
            );
注意在默认路由之前写入,因为当它匹配第一个路由时,它不会检查其他路由


对不起,我的英语不好

好的,现在可以了,我只需要想一想如何更改_Layout.cshtml中的ActionLink以指向新链接,因为它指向旧的/Portfolio/PortfolioOk,现在可以了,我只是想知道如何更改ulayout.cshtml中的ActionLink以指向新链接,因为它指向旧的/Portfolio/Portfolio