2016-06-28 61 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> 
} 

异型材=字符串DropDownListFor剃刀列表<string>

SelectedProfil =字符串

SelectedProfil的名单总是空到控制器上后

+1

有你加入该路径文件中的发布操作的自定义路由?我说因为你通过助手(Html.BeginForm(“Add”,“TestController”,new {profil = Model.SelectedProfil))使用的路由与通常默认生成的路由不同,因为传递的参数总是这个名字叫做“id”,在这里它叫做“profil”。只是一个想法,但是在我的默认路由配置中,我必须添加一个自定义路由,以便这样的post操作可以工作。 –

+0

原来使用(Html.BeginForm(“Add” ,“Test”,new {bd = Model.BD,appName = Model.SelectedAppName,profil = Model.SelectedProfil},FormMethod.Post))除profil参数以外的所有工作都是空的 – FrankSharp

+0

正常情况下,您必须添加自定义路由,因为TestController应该命名为Test – FrankSharp

回答

0

只需

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

根据你的问题使用'DropDownListFor()',删除'new {profil = Model.SelectedProfil}'并且方法应该是'public ActionResult Add(string SelectedProfil) ' –