【问题标题】:MVC Error MessageMVC 错误消息
【发布时间】:2014-10-27 23:36:11
【问题描述】:

我首先使用代码和自动生成的视图。使用该模型,我将 Column 设置为唯一。

但是当它到达 db.SaveChanges();由于数据库中有重复项,我收到错误消息。

 public ActionResult Create([Bind(Include="Columns")] Tv tv)
    {
        if (ModelState.IsValid)
        {
            db.Tv.Add(tv);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(tv);
    }

如何创建错误消息并将用户返回到显示该错误的上一页?我尝试过尝试捕获,但没有成功

【问题讨论】:

  • 您可以使用返回值:“调用 SaveChanges 时处于已添加、已修改或已删除状态的对象数。”链接:msdn.microsoft.com/en-us/library/bb336792(v=vs.110).aspx
  • 是例外吗?你可以发布确切的消息吗?
  • @RotemVaron - 是的,这是个例外Exception Details: System.Data.SqlClient.SqlException: Cannot insert duplicate key row in object 'dbo.Tv' with unique index 'IX_TvTitle'. The duplicate key value is (Camping). The statement has been terminated.
  • 错误源自数据库,而不是您的代码。你能在电视桌上试试这个吗? stackoverflow.com/questions/4228073/…youtube.com/watch?v=ITneqe2OCwY
  • 抱歉,您到底想让我做什么?我已经有一个唯一列和一个标识列

标签: c# asp.net-mvc entity-framework


【解决方案1】:

您可以使用保存方法的返回值。我还会添加一个 try/catch。

public ActionResult Create([Bind(Include="Columns")] Tv tv)
{
        if (ModelState.IsValid)
        {
           try
           {
              db.Tv.Add(tv);
              int num = db.SaveChanges();
              if (num == 0)
              {
                 //prompt user
              }
              return RedirectToAction("Index");
           catch (OptimisticConcurrencyException)
           {
                 // handle the exception
           }
        }
        return View(tv);
    }

【讨论】:

  • try catch 导致 db.SaveChanges(); 发生相同的异常
  • @niko619,似乎没有在电视桌上设置身份增量(和种子)。您可以尝试并报告吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 2014-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多