2010-05-12 7 views
1

m ayant problème dans le passage de paramètre au contrôleur action, je l'ai fait ce qui suitHtml.ActionLink ne paramètre pas passer à l'action contrôleur

 

    Url.Action("SchoolDetails","School",new{id=item.SchoolId}) 

et mon action du contrôleur suit

 

    public ActionResult SchoolDetails(string schoolId,_ASI_School schoolDetail) 
    { 
      schoolDetail = SchoolRepository.GetSchoolById(schoolId); 
      return View(schoolDetail); 
    } 

i dn sais pas pourquoi le SCHOOLID ci-dessus dans l'action devient nulle ..

Répondre

3

Votre paramètre est nommé id, non schoolId dans le Url.Action appel de méthode. Les noms des paramètres dans le code HTML, dans l'action de votre contrôleur et dans la définition de l'itinéraire doivent correspondre. Vous devez également avoir ce paramètre dans votre itinéraire. Par exemple, si vous utilisez la route par défaut a.k.a Controller/Action/{id}, renommez le paramètre de votre action en id. Si le paramètre n'est pas trouvé dans votre route, il sera déplacé vers le paramètre query-string et vous pourrez y accéder dans l'action avec Request.QueryString["id"].

+1

thnx beaucoup ... – FosterZ

2

Vous devez définir votre itinéraire par défaut Global.asax à:

routes.MapRoute(
     "Default", 
     "Home", 
     new { Controller = "Home", action = "Index", schoolId = UrlParameter.Optional } 

et changer votre Action-Url.Action("SchoolDetails","School",new{schoolId =item.SchoolId}).

Questions connexes