1

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']);
            }
4

2 に答える 2

1

最善の方法は、ビューに渡すものである ViewModel を使用することです。したがって、次のようになります。

Database -> Model -> Controller -> ViewModel -> View

そして、ユーザーがレコードを更新または削除すると:

View -> ViewModel -> Controller -> Model -> Database

つまり、ビューに必要なプロパティのみを含む PeopleModel クラスを作成します。

于 2012-09-08T13:35:43.803 に答える