【发布时间】:2021-09-14 07:52:46
【问题描述】:
我有一个MachineSettings 实体,这个实体有一个Machine 实体作为外键。
public class Machine
{
[Key]
public int MachineId { get; set; }
[Required]
[Display(Name = "Machine Type")]
public string MachineName { get; set; }
}
public class MachineSettings
{
[Key]
public int MachineSettingId { get; set; }
[Required]
public string Password { get; set; }
[Required]
public int ReferenceKeyLength { get; set; }
[Required]
public virtual Machine MachineId { get; set; }
}
在我的控制器类中,当我将Edit 方法创建为POST 时:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(MachineSettings machineSettings)
{
if (ModelState.IsValid)
{
db.Entry(objapp).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(machineSettings);
}
在页面上,我在下拉列表中显示了机器列表,何时进行更改并在下拉列表中选择另一台机器并单击保存。使用MachineSetting 对象调用Edit 方法。这里我的ModelState.IsValid 总是假的。
在调试模式下检查对象时,我从下拉列表中获取了MachineId,但未返回MachineName,因此如何避免MachineName 在此检查以使ModelState.IsValid 属性为真?
【问题讨论】:
-
确实需要MachineId,请检查是否可以删除所需属性
标签: c# asp.net-mvc .net-core entity-framework-core model-binding