C# ASP.NET AJAX Web服务中的数据库调用与传递属性

C# ASP.NET AJAX Web服务中的数据库调用与传递属性,c#,javascript,jquery,asp.net,ajax,C#,Javascript,Jquery,Asp.net,Ajax,我有一个包含许多食物的食物菜单应用程序。每个项目都有我通过单选和复选按钮提供的几个选项。每个按钮都有属性,即名称、代码、数据库id等 现在,当用户选择食品时,我的jquery代码调用服务器端Web服务,该服务进行数据库调用,以生成并返回食品的按钮及其属性的HTML 单选和复选按钮示例: <input type="radio" value='6 inch:6":538:0.00:116:152:False' /> <input type="checkbox" itemid="1

我有一个包含许多食物的食物菜单应用程序。每个项目都有我通过单选和复选按钮提供的几个选项。每个按钮都有属性,即名称、代码、数据库id等

现在,当用户选择食品时,我的jquery代码调用服务器端Web服务,该服务进行数据库调用,以生成并返回食品的按钮及其属性的HTML

单选和复选按钮示例:

<input type="radio" value='6 inch:6":538:0.00:116:152:False' />

<input type="checkbox" itemid="152" abbreviation="HP" additionalcost="0.50" ingrdname="Pepper Jack" stdingrd="False" ingid="428" inggroupid="74" />
因此,所有属性信息都会来回传递。当然,用户的按钮数量非常多

问题: 我应该保持原样,还是只需来回传递少量信息,即数据库id和已检查或未检查,并在服务器上进行额外的数据库调用,以便在用户将项目添加到订单时获取所需的属性信息


欢迎所有想法。

后端web服务不应返回HTML,甚至不应返回与HTML构造有关的任何内容。让它返回一个对象结构,并使用一个模板引擎,或一堆jquery代码来解释对象数据,并在UI层(又名)中构建html结构。。你的html/js

如果您使用的是c,请查看WebAPI。它将返回并接受JSON对象,并将它们转换为.Net对象/DTO

例如:

您的数据服务可以返回JSON格式的某些对象:

[{size: "6 inch", sizeAbbrev: '6"', otherProp: 538, otherProp2:116, otherProp3: 152: otherProp4: false}]
然后jquery可以执行以下操作:

data.forEach(function(obj, i){
   $('#myDiv').append('<input type="radio" value= "' + obj.size + ':' + obj.sizeAbbrev + '"/>';
});
模板化lib(比如handlebar)可以更干净地实现这一点,但jQuery也可以


现在,您的后端服务只提供数据,如果您不想再使用输入框或收音机。。您不需要重新编译svc。。您只需更改一点轻量级js。

谢谢您的想法,@shredmill。我将进一步了解Web API。我想一个更大的问题是,我是否应该尝试通过Web API或其他方式限制服务器和客户机之间传递的数据量,以节省带宽和客户机上的内存,并更多地依赖服务器端数据库调用?对于移动设备来说,带宽/内存与服务器代码性能的权衡是否是一个大问题?当你说移动设备时,从服务器传递到客户端的数据越少越好。我更担心的是带宽,而不是客户端的负载。按需加载数据,而不是全部提前加载。WebAPI使用的所有库都有点繁重,因此如果您不使用.Net平台,Node.js提供了一个超轻量的服务接口。快点!
data.forEach(function(obj, i){
   $('#myDiv').append('<input type="radio" value= "' + obj.size + ':' + obj.sizeAbbrev + '"/>';
});