Asp.net mvc 4 通过更新字段删除值

Asp.net mvc 4 通过更新字段删除值,asp.net-mvc-4,visual-studio-2012,c#-5.0,Asp.net Mvc 4,Visual Studio 2012,C# 5.0,我有这个: 视图: 但我可以更新其他值(颜色、重量、高度),但如果在更新视图中按save,则标记名称将被删除。我还检查了数据库,更新后标记值消失了。但是如果我只是按编辑(更新),那么首先我会在下拉列表中看到值(标记),但保存后标记值消失。即使我没有在更新视图中更改标记值 我就是想不出是怎么回事 谢谢 Oke 我知道这是个类型错误 但是你说的那些辍学者不正确是什么意思?因为你没有无限的字节标记列表。这就是为什么我选择制作一个包含所有标记、颜色和大小的下拉列表。因为管理员填写标记、大小等,然后用户可

我有这个:

视图:

但我可以更新其他值(颜色、重量、高度),但如果在更新视图中按save,则标记名称将被删除。我还检查了数据库,更新后标记值消失了。但是如果我只是按编辑(更新),那么首先我会在下拉列表中看到值(标记),但保存后标记值消失。即使我没有在更新视图中更改标记值

我就是想不出是怎么回事

谢谢

Oke

我知道这是个类型错误

但是你说的那些辍学者不正确是什么意思?因为你没有无限的字节标记列表。这就是为什么我选择制作一个包含所有标记、颜色和大小的下拉列表。因为管理员填写标记、大小等,然后用户可以选择标记、颜色等。但是您将如何设计不同的属性

我没有单独的颜色、标记等表格,但有必要吗


谢谢

您没有将任何内容绑定到属性
标记
(您显示的内容绑定到
ID
属性)。选择列表的名称最好与属性的名称不同

在控制器中

ViewBag.MarkList = new SelectList(db.Bycicles, "BycicleID", "Mark");
在我看来

@model YourAssembly.Bycicle
....
<div class="form-group">
  @Html.LabelFor(m => m.Mark)
  <div class="col-md-10">
    @Html.DropDownListFor(m => m.Mark, (SelectList)ViewBag.MarkList)
    @Html.ValidationMessageFor(m => m.Mark)
  </div>
</div>

然后将选择列表分配给视图模型,而不是ViewBag

注意,我认为选择列表没有意义,因为您将它们都绑定到了
db.Bycicles
。您是否有
BycicleMarks
BycicleColours
等表格?您试图编辑我的答案,但将被拒绝(添加评论或编辑您的问题)。注意我的更新(拼写错误
ViewBag.MakeList
应该是
ViewBag.MarkList
),因此如果还没有创建
Bycicle
,那么
新的选择列表(db.Bycicles,“Color”,“Color”,Bycicle.Color)将为空-即您永远无法选择颜色。当然,对于与
Bycicle
public class Bycicle
    {
        public int id { get; set; }
        // [Column("Mark")]
        public string Mark { get; set; }
        public string Color { get; set; }
        public string Weight { get; set; }
        public string Height { get; set; }
        public DateTime? LastTimeChecked { get; set; }


    }
ViewBag.MarkList = new SelectList(db.Bycicles, "BycicleID", "Mark");
@model YourAssembly.Bycicle
....
<div class="form-group">
  @Html.LabelFor(m => m.Mark)
  <div class="col-md-10">
    @Html.DropDownListFor(m => m.Mark, (SelectList)ViewBag.MarkList)
    @Html.ValidationMessageFor(m => m.Mark)
  </div>
</div>
public class BycicleVM
{
  public int id { get; set; }
  // other properties of Bycicle that you want to edit
  public SelectList MarkList { get; set; }
  // other select lists
}