Web ページで、ユーザーがデータテーブルから行を削除した場合、ビューのモデルまたはデータテーブルを使用してデータ操作を行う必要がありますか? (私は MVC 4 を学習していますが、モデルにアクセスするとサーバーにヒットするかどうかはわかりません。)
これが私がやろうとしていることの簡単な例です。私のコントローラーでは、いくつかの Person オブジェクトを返しています。
public ActionResult Index()
{
List<Person> people = new List<Person>();
people.Add(new Person() { Id = 1, FirstName = "Geddy", LastName = "Lee" });
people.Add(new Person() { Id = 2, FirstName = "Alex", LastName = "Lifeson" });
// more people here...
return View(people);
}
これは、私のビューが人を参照する方法です (ビューの最初の行):
@model List<MiscCommon.Entities.Person>
私の見解では、データテーブルを使用して表示しています。その部分はうまく機能しています。
私の JavaScript 関数では、ユーザーがテーブルの行で削除 (x) を押したときに ID を渡すことができました。ただし、データテーブルを直接操作する必要があるか (以下に示すように)、@model を変更してからデータテーブルを更新する必要があるかどうかはわかりません。どの方法が正しいと考えられますか? または、私が気付いていない別のアプローチもありますか?
function RemovePerson(personIdToDelete) {
var oTable = $('#tablePeople').dataTable();
var rows = oTable.fnGetNodes();
var rowToDelete;
for (var i = 0; i < rows.length; i++) {
var idFromCurrentRow = oTable.fnGetData(i, 1); // ID column
if (idFromCurrentRow == personIdToDelete) {
rowToDelete = i;
}
}
oTable.fnDeleteRow(rowToDelete);
}
注:最初にモデルを使用してテーブルにデータを入力しています:
@foreach (var person in Model) {
@:$('#tablePeople').dataTable().fnAddData([@MvcHtmlString.Create(string.Format("'<a href=\"\", onclick=\"RemovePerson({0}); return false;\">x</a>'", @person.Id)), '@person.FirstName', '@person.LastName']);
}