2012-02-27 14 views
0

私は自分のページにいくつかの入力をしています。入力ぼかしのモデルに変更を保存したいので、Googleの連絡先のようにサーバーに保存された各入力の値を変更します。ajaxと.net mvcでフォームフィールドを編集

<input id="FirstName" name="FirstName">Jack</input> 

jqueryを使用してブラーイベントを作成し、値をサーバーに戻します。それは、エンティティの入力、値、およびidの名前を持つ構造をポストします。私は私のコントローラで

$.post(url, { id: "2", key: "FirstName", value: "Jack" }, successFuction); 

public ActionResult EditField(int id, string key, string value) 

私はその後、IDとEntityFrameworkを使用してエンティティを取得します。私はフィールドのモデルのプロパティを更新したかったのです。

var entity = _db.Get(id); 
entity[key] = value; 
return Content "Success"; 

私は明らかにできません!私が考えることができる唯一の方法は、各フィールドに複数のメソッドがありますので、EditNameEditAddressなど間違っています。このメソッドは、モデルの各プロパティを処理できるようにします。

個々のフィールドごとに複数のメソッドを記述するのではなく、コントローラを構成するより良い方法はありますか?ユーザーがフォームに進むにつれて、あなたはすべての変更を保存しているので、

+0

「私がしたいことを達成する良い方法は何ですか?」 - >何をしたいですか? –

+0

値を保存します。私は各フィールドのメソッドを記述する必要はありません。 – Terry

+0

あなたの質問は、あなたが使用しているデータベースアクセス技術(私が推測する)とASP.NET MVCよりもjQueryに関連しているようです。質問に適切なタグを付けてください。私はこれが実際にASP.NET MVCと何をしているのかは分かりません。 –

答えて

1
  1. あなたのフィールドのいずれかのために、それぞれのぼかしの上にあなたの全体の形(例えば姓、名など)を投稿できる(これは問題ないはずですとにかく)。 が本当にバイトを保存しようとしていない限り、フォーム全体を投稿すると問題はないようです。
  2. フィールド名を投稿してから、リフレクションを使用してオブジェクトのプロパティをルックアップし、値を設定することができます。

    public class FieldEntity { 
        public int Id { get; set; } 
        public string Key { get; set; } 
        public string Value { get; set; } 
    } 
    

    次にようにコンテキスト内で使用:ただし

    ​​

    、私はあなたが一般的な方法でエンティティをモデル化するために喜んでいる場合は、あなたがそれを行うことができると思います

+0

私はフォーム全体を投稿することさえ考えなかった。しかし、1つのフィールドを変更することは残酷に思われます。反射を使っていないのは本当に遅いですか?さらに、私が考えていると思う何かが本当にハッキーに見えるかもしれません。 – Terry

+0

@Terry - 個人的には、私は反射を使用せず、フォーム全体を投稿します。直感的で簡単に実装することができます。パフォーマンス上の大きな欠点がない限り、常に私の勝利シナリオです。これらの2つの状況がどのように実行されるかは、あなたがテストすることになりますが、スループットが*たくさんあるサイトで作業している場合を除き、これらの2つのソリューションのどちらもうまく動作します。 –

0

意味のある方法でデータを構造化するほうがよいでしょう。この例では、PersonAddressエンティティのように見えます。だから、Addressというプロパティを持つPersonエンティティを持っていないのはなぜですか?

+0

全体のポイントは、1つのメソッドがすべてのフィールドを処理できるということです。そこで、{key: "Address"、value: "Blah"}を投稿し、モデルのアドレスプロパティを更新することができました。 – Terry

+0

それから@ Ek0nomikが正しい方向を指しています。フィールドレベルでは、リフレクションを使用できます。 –

関連する問題