C# MVC 4 ViewModel 导致 DropDownList 有错误的名称

标签 c# razor asp.net-mvc-4 viewmodel

免责声明:我是 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/

相关文章:

c# - 在 Unity 中使用 GetComponent 时通过基类管理派生类?

c# - 图表 - 放大以显示更精确的数据

带有选项卡内容的 CSS 仪表板导致主区域显示在导航下方

c# - WPF 应用程序的入口点是什么?

x.95 的 C# Math.Round 问题

c# - 我如何迭代 Razor 中的一组对象?

asp.net-mvc - Asp.net MVC .properties 文件未从 View (cshtml)加载

Html.EditorFor Onchange 事件

c# - 在 MVC 4 中使用 jquery 工具提示

asp.net-mvc-4 - 如何在 ASP.NET MVC 中使用 for 循环?