1

在我开始在 ASP.NET 中进行 Web 开发项目的同时,我刚刚设法获得了 CodeSmith 5.2 的副本,我想我会将两者结合起来。

该站点将需要使用基于 JSON 的元素(jQuery 或 ExtJS,尚未决定)来进行搜索/下拉类型的行为。

我做了一些阅读,我在 netTiers 中看到了一些关于循环引用等的 JSON 序列化的常见问题。

因此,默认情况下,我似乎可以选择 netTiers、CSLA、NHibernate、KineticFramework 或 PLINQO。

我以前用过netTiers。

我想要的是一些指针:

哪个框架最容易生成兼容代码,以及需要对默认设置或模板本身进行哪些调整才能使其正常工作。

4

1 回答 1

2

一段时间以来,我一直在使用带有 ExtJs 的 netTiers,在编码时确实存在循环引用的问题,但我们很少返回整个实体并发现返回实体数据的子集效果很好。我们使用 C#;这是一个例子:

UserAccountService uaSvc = new UserAccountService();
UserAccount ua = uaSvc.GetByUserId(UserId)[0];
return Json(new { success = true, data = new { ua.UserName, ua.CustomerName, ua.Email } });

其中 UserAccountService 和 UserAccount 是使用 CodeSmith netTiers 模板生成的服务和实体,而 Json() 返回函数是 Microsoft MVC 的一部分。如果您不使用 MVC ,则可以替换另一种编码器,例如Newtonsoft编码器。

这将返回如下所示的 JSON;Ext.js 可以很容易地使用它:

{"success": true, data:{"UserName":"Knight", "CustomerName":"Knight Inc.", "Email":"knight@knightknight.com"}}

也可以返回一个数据列表或者数组,下面使用Linq以非常紧凑的方式实现

return Json(new UserAccountService().GetAll().Select(u=>new  {u.UserID, u.UserName}));

这将返回如下数据:

[{"UserName":"Knight", "CustomerName":"Knight Inc.", "Email":"knight@knightknight.com"}, {"UserName":"George", "CustomerName":"George Inc.", "Email":"george@george.com"}]

如您所见,兼容的 JSON 很容易从 netTiers 查询结果中创建。除了 netTiers 之外,我没有使用过其他模板,但我想你会走类似的道路。

于 2011-04-11T13:54:16.003 回答