免责声明:我是 C#、.Net 和 MVC 的新手。这也是我的第一个 ViewModel。
我有一个看起来像这样的 View 模型。
public class ProjectEditIndexData
{
public Project Project{ get; set; }
public List<Characteristic> Chars { get; set; }
public List<Tag> Tags { get; set; }
public List<Category> Cats { get; set; }
public IEnumerable<SelectListItem> Types { get; set; }
}
我的 Controller
public ActionResult Edit(int id = 0)
{
ProjectEditIndexData project = new ProjectEditIndexData();
project.Project = db.Projects.Find(id);
project.Tags = db.Tags.ToList();
project.Chars = db.Characteristics.ToList();
project.Cats = db.Categories.ToList();
project.Types = new SelectList(db.ProjectTypes, "ProjectTypeID", "Type", project.Project.ProjectTypeID);
if (project == null)
{
return HttpNotFound();
}
return View(project);
}
在我看来有一条线是这样的。
@Html.DropDownList("ProjectTypeID", (SelectList)ViewBag.Types)
呈现的 HTML
<select id="ProjectTypeID" name="ProjectTypeID" class="valid">
<option selected="selected" value="1">Novel</option>
<option value="2">Type 1</option>
<option value="3">Type 2</option>
<option value="4">Type 3</option>
<option value="5">Type 4</option>
</select>
这一切都很好,大部分情况下。问题是,一旦我发布表单,Project.ProjectID 值为 0,因为下拉列表中的 NAME 属性是“ProjectTypeID”而不是“Project.ProjectTypeID”。如何让下拉列表具有正确的名称,以便它正确发布并且我可以更新项目表中的记录?
最佳答案
尝试使用辅助扩展方法的另一个重载:
@Html.DropDownList("Project.ProjectTypeID", (SelectList)ViewBag.Types)
关于C# MVC 4 ViewModel 导致 DropDownList 有错误的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14086124/