在ASP.NET Core中更改控制器路由

时间:2017-08-21 22:11:37

标签: c# asp.net-core routing asp.net-core-mvc

所以我有一个HomeController,与Actions一起访问它我必须输入 url.com/home/action

是否可以将此更改为 url.com/anothernamethatpointstohomeactually/action 等其他内容?

4 个答案:

答案 0 :(得分:14)

我建议您使用属性路由,但当然这取决于您的方案。

newCombobox.SetValue(ComboBox.IsEnabledProperty, new Binding("HasAttachment") { Converter = new InverseBooleanConverter() });

可在[Route("prefix")] public class Home : Controller { [HttpGet("name")] public IActionResult Index() { } }

找到

有很多选项可以归属路由,有些样本:

url.com/prefix/name

检查Attribute Routing official docs

答案 1 :(得分:1)

您可以通过修改路由配置来更改网址。 它有点像htaccess但不是真的。 https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/controllers-and-routing/creating-custom-routes-cs

另一种解决方案是创建页面并执行服务器重定向。

Server.Transfer

答案 2 :(得分:1)

使用控制器顶部的Route属性可以在整个控制器上定义路径。 [Route("anothernamethatpointstohomeactually")]

您可以阅读更多here

答案 3 :(得分:1)

您可以在Routes块中的Startup.Configure方法中添加新的app.UseMvc(routes =>

routes.MapRoute(
    name: "SomeDescriptiveName",                      
    template: "AnotherNameThatPointsToHome/{action=Index}/{id?}",
    defaults: new { controller = "Home"} 
);

代码与ASP.NET MVC非常相似。

有关详细信息,请参阅Routing in ASP.NET Core

下面是ASP.NET MVC(不是ASP.NET核心MVC)

您还可以在Route中通过routes.MapRoute添加新的RouteConfig

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

请确保在定义Default路线之前插入代码。

有关详细信息,请访问docs