由于 ModelState 无效,创建对象失败。任何帮助将不胜感激。简化模型如下所示:
public partial class Timerecord
{
public int ID { get; set; }
public int locationID { get; set; }
public int teamID { get; set; }
public int actionID { get; set; }
public System.DateTime currentTime { get; set; }
public virtual Location Location { get; set; }
public virtual Action Action { get; set; }
}
由于错误,创建正确提供的 Timerecord 失败:“从类型 'System.String' 到类型 'Project.Models.Action' 的参数转换失败,因为没有类型转换器可以在这些类型之间转换。”} System.Exception { System.InvalidOperationException}
Timerecord 的所有属性都很好,但是 Action 和 Location 都是 Null(这不是问题......因为外键是正确的)。我必须自己设置 de 异物然后重新评估模型,还是必须提供构造函数 Action(string)?
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Timerecord tm)
{
try
{
if (ModelState.IsValid)
{
db.Timings.Add(tm);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
var errors = ModelState.SelectMany(x => x.Value.Errors.Select(z => z.Exception));
...
}
...
该问题似乎是由Controller的Create方法引起的(简化):
public ActionResult Create()
{
Timerecord tm = new Timerecord();
LocationDBContext dbLoc = new LocationDBContext();
ActionDBContext dbAct = new ActionDBContext();
tm.currentTime = DateTime.Now;
tm.locationID = 1;
tm.actionID = 5;
tm.Location = dbLoc.Location.Find(tm.locationID);
/* THE PROBLEM: tm.Action = dbAct.Action.Find(tm.actionID); PROBLEM HERE */
ViewData.Model = tm;
return View();
}
位置没有问题,Action 有问题。感谢您的帮助!