Telerik网格不止一个地插入相同的记录

时间:2011-11-13 12:52:54

标签: telerik telerik-grid telerik-mvc

今天我遇到了一个非常奇怪的情况。

我使用Telerik 2011.2.712 for ASP.NET MVC3,使用Razor作为视图引擎。我也有NHibernate for Data Layer。

我有一个简单的网格用于添加 - 更新 - 删除和查看简单实体。

@(Html.Telerik().Grid<SectorGridItem>()
    .Name("SectorList")
    .DataBinding(dataBinding => dataBinding
                .Ajax()
                .Select("Select", "Sector")
                .Insert("Insert", "Sector")
                .Update("Update", "Sector")
                .Delete("Delete", "Sector")
            )
            .ToolBar(commands => commands.Insert())
    .DataKeys(keys => keys.Add(c => c.Id))
    .Columns(columns =>
                 {
                     columns.Bound(o => o.Id).Hidden();
                     columns.Bound(o => o.Name);
                     columns.Command(commands =>
                     {
                         commands.Edit();
                         commands.Delete();
                    }).Width(200).Title("Command?");
                 })
    .Sortable()
    .Pageable(p => p.PageSize(20))
    )

控制器和动作也很简单:

    [GridAction]
    public ActionResult Select()
    {
        return View(new GridModel(GridHelper.GetList<Sector, SectorGridItem>()));
    }

    [HttpPost]
    [GridAction]
    public ActionResult Insert()
    {
        ISession session = DB.CurrentSession;
        using (ITransaction tx = session.BeginTransaction())
        {
            Sector item = new Sector();

            if (TryUpdateModel(item))
            {
                session.Save(item);
                tx.Commit();
            }
            else
                tx.Rollback();
        }
        return View(new GridModel(GridHelper.GetList<Sector, SectorGridItem>()));
    }

    [HttpPost]
    [GridAction]
    public ActionResult Update(int id)
    {
        ISession session = DB.CurrentSession;
        using (ITransaction tx = session.BeginTransaction())
        {
            Sector item = new Sector();

            if (TryUpdateModel(item))
            {
                session.Update(item);
                tx.Commit();
            }
            else
                tx.Rollback();
        }
        return View(new GridModel(GridHelper.GetList<Sector, SectorGridItem>()));
    }

    [HttpPost]
    [GridAction]
    public ActionResult Delete(int id)
    {
        ISession session = DB.CurrentSession;
        using (ITransaction tx = session.BeginTransaction())
        {
            session.Delete(session.Get<Sector>(id));
            tx.Commit();
        }
        return View(new GridModel(GridHelper.GetList<Sector, SectorGridItem>()));
    }

GridHelper返回数据库中的所有扇区。 我对“选择”和“删除”记录没有任何问题。

当我插入记录时,它成功将其插入到DB中。当我插入第二条记录时,它都会添加第一条记录和第二条记录。

例如:按顺序添加“First”,“Second”,“Third”,结果变为

  • 第一
  • 首先
  • 第二
  • 第一
  • 第二
  • 第三

我找不到任何这种行为的原因,也没有任何解决方案。

0 个答案:

没有答案