2009-08-13 7 views
18

J'ai le code suivant dans mon contrôleur appelé UserController:ASP.NET MVC: Impossible d'obtenir le paramètre de chaîne dans mon contrôleur

public ActionResult Details(string name) 
{ 
    MyModelDataContext db = new MyModelDataContext(); 
    Product user = db.Products.Single(t => t.Name == name); 
    return View(user); 
} 

Je pense que quand je navigue directement à http://localhost:port/User/Details/SomeName, j'atteindrai cette fonction avec le paramètre "name" contenant "SomeName". J'arrive à cette fonction, mais "name" est null. Je n'ai modifié aucun des paramètres par défaut du projet.

Qu'est-ce que je fais mal?

Merci

+0

Envoyer Pour vos définitions de route de Global.asax. –

+0

@New en ville: je ne l'ai pas changé, c'est la valeur par défaut –

Répondre

22

Si vous ne l'avez pas changé vos définitions de la route en Global.asax.cs alors je suppose qu'il utilise toujours le nom par défaut « id » pour le paramètre. Changez-le là pour "nommer" ou renommez votre paramètre d'action en "id".

+1

+1 J'ai changé le nom du paramètre en "id" et cela a fonctionné, merci! –

4

Avez-vous défini une route dans votre global.asax qui inclut le paramètre 'name'?

routes.MapRoute( 
"Default",          // Route name 
"{controller}/{action}/{name}",     // URL w/ params 
new { controller="Home", action="Index",name="" } // Param defaults 
); 

Voir l'exemple dans le tutoriel NerdDinner: http://nerddinnerbook.s3.amazonaws.com/Part4.htm

Questions connexes