0

由于 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 有问题。感谢您的帮助!

4

1 回答 1

0

将 Action 重命名为 Activity,一切正常!猜猜绑定(...)搞砸了 System.Action?!?没有其他解释。也许有人可以证实这种麻烦。

于 2012-11-02T10:07:18.493 回答