私は今日本当に奇妙な状況に直面した。
ビューエンジンとしてRazorを使用して、ASP.NET MVC3にTelerik
2011.2.712を使用しています。私はまた、データレイヤーのためのNHibernateを持っています。
私は、単純なエンティティを追加、更新、削除、表示するための単純なグリッドを持っています。
@(Html.Telerik().Grid()
.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()));
}
[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()));
}
[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()));
}
[HttpPost]
[GridAction]
public ActionResult Delete(int id)
{
ISession session = DB.CurrentSession;
using (ITransaction tx = session.BeginTransaction())
{
session.Delete(session.Get(id));
tx.Commit();
}
return View(new GridModel(GridHelper.GetList()));
}
GridHelperは、DB内のすべてのセクタを返します。 私はレコードの “選択”と “削除”には問題ありません。
レコードを挿入すると、レコードが正常に挿入されます。
2番目のレコードを挿入すると、最初のレコードと2番目のレコードが追加されます。
例: “First”、 “Second”、 “Third”を順番に追加すると、結果は次のようになります。
- 最初に
- 最初に
- 2番目の
- 最初に
- 2番目の
- 3番目
私はこの振る舞いの理由や解決策を見つけることができません。
ベストアンサー
申し訳ありませんが、適切な答えはありません