2014-04-22 3 views
0

Эй All I Добавлены два пользовательских маршрутовMVC маршрутизации с несколькими параметрами не работает

routes.MapRoute(
      "ParentCat", 
      "{PCat}/{id}", 
      new { Controller = "Adds", Action = "DetailWanted", PCat = UrlParameter.Optional, id = UrlParameter.Optional }); 

routes.MapRoute(
      "SubCat", 
      "{PCat}/{SCat}/{id}", 
      new { Controller = "Adds", Action = "DetailWanted", PCat = UrlParameter.Optional, SCat = UrlParameter.Optional, id = UrlParameter.Optional }); 

для URLs

localhost:2110/Category/addid 

&

localhost:2110/Category/SubCategory/addid 

но отладчик прямые ходы и заклинивание в подробное действие пользовательского маршрута и даже при инициализации моего маршрута по умолчанию

routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 

не называется

+0

несколько необязательных параметров не может быть возможно, но любой может плз дать решение или заменяющий, что –

ответ

0

я наткнулся на решение на

this thing solved my problem

, а затем переписал мои маршруты в

routes.MapRoute(
      name: "SubCat", 
      url: "{PCat}/{SCat}/{id}", 
      defaults: new { Controller = "Adds", Action = "Details" });//, id = UrlParameter.Optional PCat = UrlParameter.Optional, SCat = UrlParameter.Optional, 

     routes.MapRoute(
      name: "ParentCat", 
      url: "{PCat}/{id}", 
      defaults: new { Controller = "Adds", Action = "Details" });//,PCat = UrlParameter.Optional,id = UrlParameter.Optional 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

с кодом контроллера в

public ActionResult Details(string PCat = null, string SCat = null, int id = 0) 
    { 
     Add add = new Add(); 
     if (PCat == null && SCat == null && id > 0 && id != null) 
     { 
      add = db.Adds.Single(a => a.AddId == id); 
     } 
     if (SCat == null && PCat != null && id > 0 && id != null) 
     { 
      add = db.Adds.Single(a => a.AddId == id && a.Category.CategoryName == PCat); 
     } 
     if (SCat != null && PCat != null && id > 0 && id != null) 
     { 
      add = db.Adds.Single(a => a.AddId == id && a.Category.CategoryName == PCat && a.Category1.CategoryName == SCat); 
     } 
     if (add == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(add); 
    } 

вместо

public ActionResult DetailWanted(string PCat=null,string SCat=null, int id=0) 
    {    
     if (PCat == "Adds" || PCat == null) 
     { 
      return RedirectToAction("Index", "Home");     
     } 
     if (id > 0 && id != null) 
     { 
      if (SCat != null && PCat != null) 
      { 
       //return RedirectToAction("Details", "Adds" , new { @id = id }); 
       return Redirect("/Adds/Details/" + id); 
      } 
      else 
      { 
       return RedirectToAction("Details", "Adds" , new { @id = id }); 
      } 
     } 
     else 
     { 
      return RedirectToAction("Index"); 
     } 

     return RedirectToAction("Index", "Home");} 
Смежные вопросы