2015-03-04 1 views
3

S'il vous plaît, j'ai un problème avec l'un de mes contrôleurs depuis des heures. J'ai utilisé avec succès des métothos similaires tout au long du projet. Cependant, pour une raison quelconque, le paramterer de ce contrôleur est toujours nul. Voici mon contrôleur.ActionLink ne transmet pas de paramètre au contrôleur - asp.Net MVC 4

[Authorize(Roles = "Employer")] 
public class EmployerController : Controller 
{ 
    [HttpGet] 
    public ActionResult Index(long? id) 
    { 

    } 

}

Mon lien d'action est inférieure à

<p>@Html.ActionLink("View jobs", "Index", "Employer", new { id = userid})</p> 

je un point de rupture et confirmé que mon userid n'est pas nul.

Voici mon itinéraire. Je m'attends à ce que mon action soit servie par la route quatre.

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

Auparavant mon paramètre de contrôleur était employerId, alors je bien que cela puisse être la cause de mon erreur parce que je l'utilise dans la voie. J'ai changé pour id et pourtant passe encore vide. Mon URL retourne quelque chose comme.

Employer?Length=8 

D'où vient le LETHTHTH? S'il vous plaît, où vais-je mal? Toute aide serait appréciée.

+1

Vous utilisez la mauvaise surcharge du 'ActionLink'. Il y a beaucoup de telles questions sur le SO, utilisez la recherche. – Zabavsky

+0

duplication possible de [Razor actionlink autogenerating? Length = 7 dans URL?] (Http://stackoverflow.com/questions/4357856/razor-actionlink-autogenerating-length-7-in-url) – Zabavsky

Répondre

3

Le problème est que vous utilisez une mauvaise surcharge de @Html.ActionLink.

Au lieu de

<p>@Html.ActionLink("View jobs", "Index", "Employer", new { id = userid })</p> 

Essayez

<p>@Html.ActionLink("View jobs", "Index", "Employer",new { id = userid }, null)</p> 

OU

<p>@Html.ActionLink("View jobs", "Index", "Employer",new { id = userid }, new{})</p> 
1

Vous devez utiliser ce overload:

@Html.ActionLink("View jobs", "Index", "Employer", new { id = userid}, null) 

Vous utilisez actuellement le wrong overload qui prend le nom du contrôleur que les valeurs de l'itinéraire. (C'est une séquence de 8 caractères)