2012-08-03 1 views
1

Je ne comprends pas où est le problème ... Mes valeurs Rout est:ne peut pas passer id paramètre dans ActionLink

routes.MapRoute(
       "Default", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
      ); 

Et j'essayer de passer le paramètre id:

@Html.ActionLink(app.Name, "SingleAppEdit", "Admin", new { id = app.Id }, null) 

À ma Action dans le contrôleur "Admin":

public ActionResult SingleAppEdit(string appId) 
     { 
      var positions = new List<SelectListItem> 
             { 
              new SelectListItem() {Text = "Top", Value = "Top"}, 
              new SelectListItem() {Text = "Bottom", Value = "Bottom"}, 
              new SelectListItem() {Text = "None", Value = "None"} 
             }; 
      ViewData["PositionsList"] = new SelectList(positions, "Value", "Text"); 


      var app = Apps.FirstOrDefault(a => a.Id == Convert.ToInt32(appId)); 
      return View(app); 
     } 

Je reçois une valeur nulle dans le contrôleur. Quelqu'un peut-il aider?

Répondre

6

Votre nom de paramètre de méthode est appId. Mais vous essayez de passer un paramètre nommé id.

Solution: Modifiez le nom de votre paramètre pour qu'il corresponde à la définition de la méthode.

@Html.ActionLink(app.Name, "SingleAppEdit", "Admin", 
           new { appId= app.Id }, null) 
+0

Merci pour votre aide. –

+0

@ user1086344: Vous êtes les bienvenus. Heureux d'avoir pu aider :) – Shyju

1

Changement appID dans le contrôleur juste ID comme ceci:

public ActionResult SingleAppEdit(string id) 
     { 
      var positions = new List<SelectListItem> 
             { 
              new SelectListItem() {Text = "Top", Value = "Top"}, 
              new SelectListItem() {Text = "Bottom", Value = "Bottom"}, 
              new SelectListItem() {Text = "None", Value = "None"} 
             }; 
      ViewData["PositionsList"] = new SelectList(positions, "Value", "Text"); 


      var app = Apps.FirstOrDefault(a => a.Id == Convert.ToInt32(id)); 
      return View(app); 
     } 
+0

Merci pour votre aide –

Questions connexes