2016-06-28 8 views
0
using (Html.BeginForm("Add", "Test", new { profil = Model.SelectedProfil }, FormMethod.Post)) 
{ 
    @Html.DropDownListFor(m => m.SelectedProfil, new SelectList(Model.Profils.Select(x => new { Value = x, Text = x }),"Value","Text")) 
    <button type="submit">Add</button> 
} 

Profils = Liste der ZeichenfolgeDropDownListFor Razor mit Liste <string>

SelectedProfil = string

SelectedProfil ist immer null an die Steuerung über den Post

+1

Haben Sie hinzugefügt eine benutzerdefinierte Route für diese Postaktion in der Routes-Datei? Ich sage das, weil die Route, die Sie über den Helfer verwenden (Html.BeginForm ("Add", "TestController", neues {profil = Model.SelectedProfil}) unterscheidet sich von dem standardmäßig erzeugten Standard, da der übergebene Parameter immer ist benannte "id", während hier heißt es "profil". Nur eine Idee, aber mit meiner Standard-Route-Konfiguration muss ich eine benutzerdefinierte Route hinzufügen, so dass eine solche Post-Aktion könnte funktionieren .. –

+0

Ursprünglich mit (Html.BeginForm ("Add" , "Test", neu {bd = Model.BD, appName = Model.SelectedAppName, profil = Model.SelectedProfil}, FormMethod.Post)) Alles funktioniert außer profil Parameter ist immer Null – FrankSharp

+0

Sein normales müssen Sie benutzerdefinierte Route hinzufügen, da TestController sollte lauten: Test – FrankSharp

Antwort

0

einfach

using (Html.BeginForm("Add", "Test", FormMethod.Post)) 

@Html.DropDownList("profil", new SelectList(Model.Profils.Select(x => new { Value = x, Text = x }),"Value","Text"))) 

[HttpPost] 
public ActionResult Add(string profil) 
{ 
    .... 
} 
+1

Vollständig unnötig, um zu der schwachen typisierten Methode zurückzukehren. Verwenden Sie 'DropDownListFor()' wie pro Frage, entfernen Sie 'new {profil = Model.SelectedProfil}' und die Methode sollte 'public ActionResult Add (string SelectedProfil) ' –

Verwandte Themen