在网页中,当用户从数据表中删除行时,我应该使用视图的模型还是数据表来进行数据操作?(我正在学习 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']);
}