2010-05-08 3 views
2

Hy Guys, Мне нужно передать в метод действие строковый параметр, потому что я хочу реализовать поиск тегов на моем сайте с помощью asp.net MVC, но каждый раз в действии ему передается пустое значение ,String Параметр в url

Я отправляю код!

Я пытаюсь создать персональный маршрут.

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

Мои RouteLink в ViewPage для каждого тега:

<% 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); 
     } 
    } 

Проблема значение тега, который всегда пустой, и поэтому вар ARTICOLI всегда пусто!

Возможно, моя проблема - это тег, который я должен сделать для параметра маршрута, связанного с моим тегом.

Кто-нибудь может мне помочь?

N.B Я использую ASP.NET MVC 1.0, а не 2.0!

+0

Привет, как насчет if (String.IsNullOrEmpty (tag)) вместо if (tag == "")? – Trimack

ответ

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 } 
    ); 
} 
+0

Спасибо! Это действительно работает :) Итак, порядок maproute очень важен? И почему, сделал так, как это работает? Спасибо :) – Ivan90

+0

Да, порядок важен. Маршруты оцениваются в том порядке, в котором они объявлены, и выполняется первое совпадение с запросом. –

+0

Хорошо, я понимаю, но это объясняется тем, что значение тега всегда равно нулю, даже если на самом деле я всегда передаю его с помощью RouteLink? А когда это необходимо, укажите IrouteContraint? и если я пройду двойной? Итак, RouteContraint полезно, только если мы должны указать форму параметра, но не тип? – Ivan90

Смежные вопросы