Cag*_*tay 18 c# url asp.net-mvc controller
如果我们有"example_name",我们可以使用[ActionName("")]在url中更改它所以,我想为控制器名称执行此操作.
我可以做这个:
URL中的ControllerName> example_nameController >:"/ example_controller"
我想在URL中更改这样的控制器名称:"/ example-conroller"
use*_*689 23
您需要使用属性路由,这是MVC 5中引入的一项功能.
根据您的示例,您应该按如下方式编辑控制器:
[RoutePrefix("example-name")]
public class example_nameController : Controller
{
// Route: example-name/Index
[Route]
public ActionResult Index()
{
return View();
}
// Route: example-name/Contact
[Route]
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
使用RoutePrefix
控制器顶部的属性可以在整个控制器上定义路径.
如前所述,此功能在MVC 5中原生可用,如果您使用的是以前版本的MVC,则需要添加以下NuGet包:AttributeRouting并在控制器中添加以下内容:
using AttributeRouting;
using AttributeRouting.Web.Mvc;
Run Code Online (Sandbox Code Playgroud)
example_name2Controller
并且想要添加链接到它的超链接,则可以按如下方式轻松执行:
@Html.ActionLink("Go to example-name2", "Index", "example_name2");
Run Code Online (Sandbox Code Playgroud)
您不需要调用将重定向到的操作example_name2Controller
,但如果您需要在其他情况下执行此操作,则可以这样执行:
public ActionResult RedirectToExample_Name2Controller()
{
return RedirectToAction("Index", "example_name2");
}
Run Code Online (Sandbox Code Playgroud)
Jam*_*ees 13
你可以通过 Routes.cs
routes.MapRoute(
name: "Controller",
url: "example-controller/{action}",
defaults: new {
controller = "ControllerName", action ="Index"
}
);
Run Code Online (Sandbox Code Playgroud)
还有另一种方法,如果你看一下这个问题的答案:如何在ASP.NET MVC中实现动态控制器和动作方法?
Mur*_*ro2 12
user449689s答案很好,但他忘了提你需要添加
routes.MapMvcAttributeRoutes();
Run Code Online (Sandbox Code Playgroud)
到RouteConfig.cs的RegisterRoutes()