今天我遇到了一个非常奇怪的情况。
我使用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”,结果变为
我找不到任何这种行为的原因,也没有任何解决方案。