0

我有这个 ASP.NET MVC 3 页面,我在其中循环模型中的对象集合,基本上我将在每个实体信息/显示旁边有一个按钮,以允许用户在 jQuery UI 对话框中编辑该实体。

我坚持的是找到将实体信息传递给 jquery 对话框的最佳方法。

我正在考虑使用许多 data-x 属性,一个用于对象的每个属性,或者只是将实体 JSON 表示存储在单个 data-x 属性中。

传递信息并在 jQuery UI 对话框中分配信息的最佳方法是什么?如果有人有任何样品,那就太好了。谢谢。

4

1 回答 1

0

您可能会考虑做的一件事是设置一个控制器,负责将服务作为 JSON 字符串发布,然后在您的按钮单击事件(启动 jQuery 对话框)中调用该服务。为此,您将需要像jsonfx(我个人最喜欢的)这样的 JSON 序列化程序的帮助,您可以在 VS 中将其作为 nuget 包下载。

例如,如果您正在调用单个实体:

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 回答