我正试图投入一些新路线,但不知道从哪里开始。我想做的是让我的路线翻译如下:
/transport class A/23 translated to /info/classes/A-23
我理解使用MapRoute的基础知识,但我可以做上面的事情吗?
我希望有人可以提供建议。
答案 0 :(得分:0)
在我看来,你实际上是在追逐UrlRewrite之类的东西,因为你要从一个网址转到另一个网址。
但MVC不会重写Urls - 它会根据您提供的路由模式将它们映射到控制器操作。
所以,如果你问你是否可以将第一个网址拆分为控制器/动作对(带参数),那么你当然可以。您只需在正确的位置设置包含必要参数的路线。所以你可以用类似的东西来调用MapRoute
(我会在空格中使用连字符):
/*route pattern:*/ "transport-class-{class1}/{class2}"
/*with route defaults:*/ new { controller = "Info", action = "ViewInfo" }
然后您可以按如下方式编写控制器:
public class InfoController : ControllerBase
{
public ActionResult ViewInfo(string class1, string class2)
{
//presumably get model data from the class parameters here
//and pass it as parameter to below:
return View();
}
}
虽然这也取决于此路由中的transport
和class
常量实际上是否也是变量我猜 - 在这种情况下你可以将它们作为路由参数推送到参数列表中你的控制器方法。