我想创建一个路径,其中控制器名称不会显示在URL中。
我从这条路线开始:
routes.MapRoute(
name: "ViewTag",
url: "tag/tagged/{tag}",
defaults: new { controller = "Tag", action = "Tagged" }
);
和控制器方法:
public class TagController : Controller
{
public ActionResult Tagged(string tag)
{
哪个有效但生成网址:tag/tagged/money
我想使用网址:tagged/money
我更改了删除控制器名称的路由:
routes.MapRoute(
name: "ViewTag",
url: "tagged/{tag}",
defaults: new { controller = "Tag", action = "Tagged" }
);
当我手动输入URL时,哪个路由正确; tagged/money
但是,它不会生成正确的路由。
@Html.ActionLink(tag.Text, "tagged", new { @tag = tag.Text })
或
@Html.ActionLink(tag.Text, "tagged", "tag", new { @tag = tag.Text }, null)
两者都会生成原始网址和错误网址:tag/tagged/{tag}
我认为路由配置用于解析传入的URL并生成URL?
答案 0 :(得分:2)
从路由网址中删除tagged
后,您可以使用Html.RouteLink方法:
@Html.RouteLink(tag.Text, "ViewTag", new { @tag = tag.Text })