数据库调用vs传递属性在ASP.. NET AJAX Web服务

Database call vs Passing attributes in ASP.NET AJAX Web Service

本文关键字:NET ASP AJAX Web 服务 属性 调用 vs 数据库      更新时间:2023-09-26

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

现在,当用户选择一种食物时,我的jquery代码调用服务器端Web Service,该服务调用数据库来生成并返回该食物的按钮及其属性的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" />

当用户单击按钮来定制食品并将食品添加到他们的订单中时,jquery代码生成一个带有按钮属性值的大字符串,并将其发送给Web服务,Web服务解析该字符串并将信息添加到数据库中。

上面按钮示例的字符串部分看起来像这样:

[6 inch:false:116:538:6":False,Pepper Jack:true:74:428:HP:False]

所以所有的属性信息是来回传递的。当然,对于用户来说,按钮的数量是非常大的。

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

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

如果你正在使用c#,看看WebAPI。它将返回并接受JSON对象,并将其转换为。net对象/DTO。

http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api

例如:

你的数据服务可以返回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 + '"/>';
});

像handlebars这样的模板库做得更干净,但jQuery也可以。

现在你的后端服务只是提供数据,如果你不再想使用输入框或单选…您不需要重新编译svc..你只需要改变一点轻量级的js