Сегодня я столкнулся с действительно странной ситуацией.
Я использую Telerik 2011.2.712 для ASP.NET MVC3 с Razor в качестве движка просмотра. У меня также есть NHibernate для уровня данных.
У меня есть простая сетка для добавления - обновления - удаления и просмотра простой сущности.
@(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 возвращает все сектора в БД.
У меня нет проблем с «Выбрать» и «Удалить» записей.
Когда я вставляю запись, она успешно вставляет ее в БД. Когда я вставляю вторую запись, она добавляет первую запись и вторую запись.
Например: добавление «Первый», «Второй», «Третий» в порядке, результат становится
- Первый
- Первый
- Второй
- Первый
- Второй
- Третий
Я не могу найти ни причины такого поведения, ни каких-либо решений.