2017-02-07 1 views
-1

je suis Tring d'avoir des liens lien vers cette /Afficher/test il ne fonctionne que si elle est int comme/Afficher/1Comment envoyer string id au contrôleur en utilisant ActionLink

mon lien d'action vue

@Html.ActionLink(item.className, "Viewe", "subject", new {id =item.className },null) 

mon action de contrôle

 public ViewResult Viewe(string id) 
    { 
     //some database 
     return View(); 
    } 

je reçois cette erreur Server Error in '/' Application. si je change l'id en tout chose qu'il fonctionne très bien, mais la volonté de lien ressemble ceci: Voir tout = par

image de l'erreur

image of the error

Code de la route

  routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
      routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
+0

Vérifiez votre fichier ** Route.Config ** sous * * App_Start **. vous trouverez un extrait de code qui gère l'itinéraire. Par défaut, il accepte 'controller/action/id'. Afin d'accepter "n'importe quoi" comme param et former une URL conviviale, vous devez créer un itinéraire personnalisé et remplacer "id" param avec "n'importe quoi". – Prabhat

+0

je ai toujours le même problème je ne me soucie pas si j'utilise param comme "id" ou "quoi que ce soit", id est bon pour moi mais j'ai toujours la même erreur –

+0

Ne pas utiliser le nom d'action 'View', vous êtes cacher la version sans paramètre de la méthode du contrôleur 'View' qui va essayer de trouver un fichier' .cshtml' avec le nom correspondant de l'action. Vous pouvez faire de la façon suivante: '[ActionName (" View ")] public ViewResult ViewAction (ID de chaîne)' –

Répondre

0

cela fonctionne pour moi

@Html.ActionLink(item.ClassName, "Viewe", "Subject", new { Id = item.ClassName }, null)