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

时间:2010-06-01 22:22:05

标签: asp.net-mvc routing

我正在寻找一个允许以下

的自定义路线

http://localhost/blog/tags/foo

目前这是实际可行的

http://localhost/tags/Index/nhibernate

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

routes.MapRoute(                 “标签”,                 “{控制器} /(编号)”,                 new {Controller =“Tags”,action =“Index”,id = UrlParameter.Optional}             );

routes.MapRoute(                 “标签”,                 “博客/ {}控制器/(编号)”,                 new {Controller =“Tags”,action =“Index”,id =“”}             );

1 个答案:

答案 0 :(得分:2)

你可以在你的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 中映射路径的顺序很重要。