这令人费解。在我的一个MVC模型$rootScope
中,我有两个属性,它们都保存了其他模型的ID,就像这样。
Project
我使用自定义编辑器,在其中使用kendo下拉列表编辑这些字段,使用各自的名称和ID作为文本和值字段。
public class Project
{
...
public int PlatformID { get; set; }
public int DepartmentID { get; set; }
...
}
<div class="col-md-11 details-item">
@Html.LabelFor(m => m.PlatformID, new { @class = "col-md-4 details-label" })
@(Html.Kendo().DropDownListFor(m => m.PlatformID)
.Name("PlatformID")
.DataValueField("ID")
.DataTextField("PlatformName")
.BindTo((System.Collections.IEnumerable)ViewData["Platforms"])
.HtmlAttributes(new { @class = "col-md-7 details-editor" })
)
</div>
<div class="col-md-11 details-item">
@Html.LabelFor(m => m.DepartmentID, new { @class = "col-md-4 details-label" })
@(Html.Kendo().DropDownListFor(m => m.DepartmentID)
.Name("DepartmentID")
.DataValueField("ID")
.DataTextField("Name")
.BindTo((System.Collections.IEnumerable)ViewData["Departments"])
.HtmlAttributes(new { @class = "col-md-7 details-editor" })
)
</div>
完全保存,但是PlatformID
甚至没有被发送到控制器,真是太疯狂了。如果DepartmentID
是我在编辑时唯一更改的内容,则它甚至不会注册已进行的更改。否则,它将作为默认值0发送。
DepartmentID
课程非常简单。
Department
public class Department
{
[Key]
public int ID { get; set; }
[DisplayName("Department Name")]
public string Name { get; set; }
}
基本相同。也许我错过了一些愚蠢的事情,或者也许还有邪恶的事情。感谢您提供的任何帮助!
答案 0 :(得分:0)
找出答案 - 如果项目可以为空,那么在编辑器模板中使用DropDown是行不通的!所以我只是在项目模型中将public int? DepartmentID
更改为public int DepartmentID
,生活又恢复了良好。