数据库调用vs传递属性在ASP.. NET AJAX Web服务
Database call vs Passing attributes in ASP.NET AJAX Web Service
我有一个包含许多食品项目的食品菜单应用程序。每个项目都有几个选项,我通过单选和复选按钮提供。每个按钮都有属性(即名称、代码、数据库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
相关文章:
- 借助asp.net验证或java脚本对多个文本进行验证
- 将Javascript数组发送到控制器ASP.NET MVC
- ASP.NET通过单击JavaScript按钮触发c#事件
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- 从javascript调用asp.net codebehind函数
- 使用javascript的Asp.net内容占位符
- 获取ASP.NET Ajax Timer状态
- ASP.NET网络摄像头显示
- 如何在只能有一个asp.net表单的主页上从asp.net页面中的javascript中获取值
- 如何将乳胶配方奶粉图像保存到Asp.net中的文件夹中
- asp.net,包括iss上的javascript slow
- 选择不在GridView-ASP.NET中激发
- 什么'是在asp.net MVC中将本地化的resources.resx文件转换为javascript文件的有效
- 使用ASP.NET将谷歌地图添加到项目中,并从数据库中检索位置
- 有什么“;错误的”;将javascript放在asp.net表单上,而不是放在单独的文件中
- 将Javascript日期转换为ASP.NET日期格式
- C#asp.net mvc Set CheckBoxFor已检查的具有Model Value的属性
- 如何使用javascript vb.net asp.net关闭web表单
- 在Ext.net (ASP.NET)中上传完成事件
- 以编程方式滚动/移动到.net asp:listview控件中的一个项目