2013-06-01 171 views
0

我想加载一个下拉列表从我的MySQL数据库收到的值。ASP.NET MVC的下拉列表+保存selectedvalue

这是我在我的视图模型

public int ProjectID { get; set; } 
public IEnumerable<SelectListItem> Projects { get; set; } 

在我控制器创建功能:

public ActionResult Create(DeliverableViewModel model) 
    { 
     var projects = (repository.GetProjects()).ToList(); 
     ViewBag.Projects = projects; 

     if (ModelState.IsValid) 
     { 
      try 
      { 

       repository.AddDeliverable(model.ProjectID); 
      } 
      catch (ArgumentException ae) 
      { 
       ModelState.AddModelError("", ae.Message); 
      } 
      return RedirectToAction("Index"); 
     } 

     return View(model); 
    } 

我加载项目在我的仓库。 (值:PROJECT_ID和PROJECT_NAME)

这是我创建查看

@model GDMfrontEnd.Models.DeliverableViewModel 

@{ 
    ViewBag.Title = "Create"; 
} 

<h2>Create</h2> 

    @using (Html.BeginForm("Create", "Deliverable", FormMethod.Post, new { enctype = "multipart/form-data" })) 
    { 
     @Html.ValidationSummary(true) 

      <div class="editor-field"> 
       @Html.DropDownListFor(model => model.Projects, 
     new SelectList(ViewBag.Projects, 
     "project_id", "project_name")) 
      </div> 
      <p> 
       <input type="submit" value="Create" /> 
      </p> 

    } 

但现在,我怎么给我的专案编号从选定值我的仓库?

回答

4

假设:

class DeliverableViewModel 
{ 
    public int ProjectID { get; set; } 
    public IEnumerable<SelectListItem> Projects { get; set; } 
} 

它应该是这样的:

@Html.DropDownListFor(model => model.ProjectID, 
    new SelectList(Model.Projects, "project_id", "project_name", Model.ProjectID)) 

可以省略最后Model.ProjectID如果你不初始化这个领域,但你可能会使用它编辑。

+0

谢谢!它非常完美! – nielsv

0

它应该是model=>model.ProjectID在POST操作中检索选定的ProjectID。

@Html.DropDownListFor(model => model.ProjectID, 
      new SelectList(ViewBag.Projects, 
      "project_id", "project_name"))