2009-08-13 5 views
18

Ich habe den folgenden Code in meinem Controller UserController genannt:ASP.NET MVC: Kann nicht String-Parameter in meinem Controller erhalten

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

erwarte ich, dass, wenn ich direkt an http://localhost:port/User/Details/SomeName zu sehen, wird erreiche ich diese Funktion mit dem Parameter "name", der "SomeName" enthält. Ich komme zu dieser Funktion, aber "name" ist null. Ich habe keine der Standardeinstellungen des Projekts geändert.

Was mache ich falsch?

Dank

+0

Veröffentlichen bitte Ihre Route Definitionen von Global.asax. –

+0

@New in der Stadt: Ich habe es nicht geändert, es ist die Standardeinstellung –

Antwort

22

Wenn Sie Ihre Route Definitionen in Global.asax.cs nicht geändert haben, dann nehme ich es immer noch den Standard „id“ Namen für den Parameter verwendet. Entweder ändern Sie es dort zu "Name" oder benennen Sie Ihren Aktionsparameter zu "Identifikation" um.

+1

+1 Ich änderte den Parameternamen zu "ID" und es hat funktioniert, danke! –

4

Haben Sie in Ihrer global.asax eine Route definiert, die den Parameter 'name' enthält?

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

Siehe das Beispiel in dem NerdDinner Tutorial: http://nerddinnerbook.s3.amazonaws.com/Part4.htm