0

従業員情報の追加と編集に同じフォームを再利用しようとしています。私はノックアウトjsを使用しており、私の見解ではノックアウトモデルを作成しています:

var koModel = new EmployeeModel(div);

サーバーからフィールドに入力したい場合は、次のようにします。

var koModel = new EmployeeModel(unserializedModelFromController, div);

リクエストが新しい従業員に対するものなのか、それとも既存の従業員を編集するものなのかを区別する最善の方法は何だろうと考えていました。

4

2 に答える 2

0

デフォルト値を持つパラメーターをビューに送信できます。従業員を編集している場合は、id の値を送信できます。送信するのではなく、作成しています。保存または編集のリクエストを受け取る関数には、デフォルト値がある場合があります。

public void SaveOrEditEmployee(int id=0, ...) //id=0 is a default value
{
    if(id==0)
    {
        //SaveEmployee
    }else
    {
        //EditEmployee
        Employee empl = (x => employee.id == id);
        ...
    }
}

または、同様に、完全なモデルを受け取り、プロパティ「id」がデータベースに既に存在するかどうかを評価することもできます

于 2012-11-12T21:15:37.447 に答える
0

パラメータを変えると、単一のコンストラクタ関数を作成できます。

var EmployeeModel = function(div, model) {
  if (model) {
    // Existing model has been passed, it's an edit request
  } else {
    // No model has been passed, it's a new request
  }
}

これは次のように呼び出すことができます:

new EmployeeModel(div);

また

new EmployeeModel(div, model);
于 2012-11-11T23:22:21.947 に答える