我想加载一个下拉列表,其中包含从我的mysql数据库收到的值。
这就是我在 ViewModel :
中的内容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>
}
但是现在,如何将我的ProjectID从选定的值提供给我的存储库?
答案 0 :(得分: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
,但您可能会在编辑时使用它。
答案 1 :(得分:0)
在POST操作中检索选定的ProjectID应为model=>model.ProjectID
。
@Html.DropDownListFor(model => model.ProjectID,
new SelectList(ViewBag.Projects,
"project_id", "project_name"))