在没有动作的情况下编写自定义aspnet mvc动作

我正在寻找一个允许以下内容的自定义路线

http://localhost/blog/tags/foo

目前这是实际工作的

http://localhost/tags/Index/nhibernate

我尝试了以下但没有成功 - 任何帮助将不胜感激

routes.MapRoute(“Tags”,“ / ”,new {Controller =“Tags”,action =“Index”,id = UrlParameter.Optional});

routes.MapRoute(“Tags”,“blog / / ”,new {Controller =“Tags”,action =“Index”,id =“”});

回答(1)

3 years ago

你可以在你的global.asax中使用这样的东西:

routes.MapRoute("Tags",
                "blog/tags/{TagName}", 
                new { Controller = "Tags", action = "ShowTag", TagName = "" });

然后,您需要一个名为“TagsController.cs”的控制器,其中一个名为ShowTag的ActionResult方法加上一个名为ShowTag.aspx的相应aspx . 您的ShowTag方法应如下所示:

public ActionResult ShowTag(string TagName)
{
    //do stuff here to get Id from tag name and get other data etc...
    return View();
}

请注意,在Global.asax.cs中映射路由的顺序很重要 .