2014-10-27 122 views
-2

我先使用代码并自动生成视图。在模型中,我将一列设置为唯一。MVC错误消息

但是,当它到达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); 
    } 

如何创建一个错误消息,并且向用户发送回显示该错误的前一页?我试过了,但它没有工作

+0

您可以使用返回值:“调用SaveChanges时处于已添加,已修改或已删除状态的对象的数量。”链接:http://msdn.microsoft.com/en-us/library/bb336792(v=vs.110).aspx – 2014-10-27 23:41:42

+0

它是一个例外吗?你能发布确切的味精吗? – 2014-10-27 23:42:48

+0

@RotemVaron - 是的,这是异常'异常详细信息:System.Data.SqlClient.SqlException:无法在具有唯一索引'IX_TvTitle'的对象'dbo.Tv'中插入重复键行。重复的键值是(露营)。 该声明已被终止。“# – niko619 2014-10-28 00:17:30

回答

0

您可以使用save方法的返回值。我还会添加一个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); 
    } 
+0

try catch导致与'db.SaveChanges();' – niko619 2014-10-28 00:16:34

+0

@ niko619发生同样的异常,似乎没有在电视表上设置身份增量(和种子)。你可以尝试报告吗? – 2014-10-28 02:31:18