0

モデル内のオブジェクトのコレクションをループしているこのASP.NET MVC 3ページがあります。基本的に、各エンティティ情報/表示の横にボタンを配置して、ユーザーがjQuery UIダイアログでそのエンティティを編集できるようにします。

私が立ち往生しているのは、エンティティの情報をjqueryダイアログに渡す最良の方法を見つけることです。

オブジェクトのプロパティごとに 1 つずつ、多くの data-x 属性を使用するか、エンティティ JSON 表現を単一の data-x 属性に格納することを考えています。

情報を渡してjQuery UIダイアログに割り当てる最良の方法は何ですか? 誰かがサンプルを持っていれば、それは素晴らしいことです。ありがとう。

4

1 に答える 1

0

代わりに検討できることの 1 つは、JSON の文字列としてサービスを発行する役割を担うコントローラーをセットアップし、ボタン クリック イベント (jQuery ダイアログを起動する) でそのサービスを呼び出すことです。これを行うには、VS で nuget パッケージとしてダウンロードできるjsonfx (私の個人的なお気に入り) のような JSON シリアライザーの助けが必要です。

たとえば、単一のエンティティを呼び出す場合:

public class ServiceController : Controller
    {
        public ActionResult GetFoo(FormCollection fc)
        {
            var json = MyFooGetter(fc["fooId"]); //Id of the object
            var writer = new JsonWriter();
            return Content(writer.Write(json), "application/json");
        }
}

クライアント側では、このサービスを次のようにリクエストします。

$.post("/service/GetFoo", {fooId: "1"}, function (response) {
        //Do stuff with your response object which is a traversable JSON version of your entity(ies).
        //Example:
        var h1 = $("<h1>");
        h1.html(response.title);
        $("document").append(h1);
    });

エンティティ コレクションの別の例:

public class ServiceController : Controller
    {
        public ActionResult GetFooCollection()
        {
            var json = MyFooCollectionGetter(); 
            var writer = new JsonWriter();
            return Content(writer.Write(json), "application/json");
       }
}

クライアント側では、このサービスを次のようにリクエストします。

$.post("/service/GetFooCollection", function (response) {
        //Do stuff with your response object which is a traversable JSON version of your entity(ies).
        //Example:
       $.each(response,function(i){
          alert(response[i].title);
       });
    });

幸運を!

于 2012-08-12T04:02:38.763 に答える