url中的字符串参数

时间:2010-05-08 10:21:22

标签: asp.net-mvc

Hy Guys, 我必须在方法操作中传递一个字符串参数,因为我想在我的站点中使用asp.net MVC实现标签搜索,但每次操作时都会传递一个空值。

我发布了一些代码!

我尝试创建个人路线。

 routes.MapRoute(
            "TagsRoute",
            "Tags/PostList/{tag}",
            new {tag = "" }
        );

每个标签的视图页面中的我的RouteLink是:

<% foreach (var itemtags in item.tblTagArt) {%> 

    <%= Html.RouteLink(itemtags.Tags.TagName,"TagsRoute", 
        new {tag=itemtags.Tags.TagName})%>,    
<% } %>

我的方法操作是:

 public ActionResult PostList(string tag)
    {
        if (tag == "")
        {
            return RedirectToAction("Index", "Home");
        }
        else
        {
            var articoli = artdb.GetArticoliByTag(tag);

            if (articoli == null)
            {
              return RedirectToAction("Index", "Home");
            }

            return View(articoli);
        }
    }

问题是值标记始终为空,因此var articoli始终为空!

可能我的问题是标签我必须制作与我的标签参数相反的路线。

任何人都可以帮助我?

N.B我使用的是ASP.NET MVC 1.0而不是2.0!

1 个答案:

答案 0 :(得分:4)

您在哪里放置此自定义路线定义?它应该之前 Default

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "TagsRoute",
        "Tags/PostList/{tag}",
        new { controller = "Tags", action = "PostList", id = UrlParameter.Optional }
    );

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Users", action = "Index", id = UrlParameter.Optional }
    );
}