蒙在股里 发表于 2015-1-16 22:20:35

ASP.NET网页编程之怎样使用ASP.NET MVC保留电子商务网站用...

计算机发展到这个时候,很多技术日益成熟,想学好一种技术都是不容易的,当你学会用的时候你对它的很多原理可能很不了解)<p>电子商务网站付出功效页面常常会有良多信息,关于这些信息的保留,常常是分步完成的,那末利用Ajax最符合不外了,好比个中的收货人信息模块。这些信息的新建和编纂保留都是用Ajax来完成的。那末有几种体例完成这个操纵呢,我想到以下几种。
先来看看该功效的截图:

一样平常情形下这些信息会对应一个实体类,就定名为:ReceiverInfo,复杂起见,我界说ReceiverInfo以下:

1、将必要的值拼接成json文本,再Action内里处置
起首您必要将要保留的值拼接成一个json文本,相似:
vartest="{ReceiverId:5,ReceiverName:"will",Sex:"F",CreateDate:"2011-02-21"}";然后用Jquery保留到数据库,代码以下:
$.ajax({url:"/Home/test1",type:"post",cache:false,data:test});然后您在Action内里如许操纵:
StreamReaderreader=newStreamReader(Request.InputStream);stringbodyText=reader.ReadToEnd();JavaScriptSerializerjs=newJavaScriptSerializer();ReceiverInforeceiver=js.Deserialize<ReceiverInfo>(bodyText);//保留。。。2、使用自界说的ModelBinder完成
JsonBinder
publicclassJsonBinder<T>:IModelBinder{publicobjectBindModel(ControllerContextcontrollerContext,ModelBindingContextbindingContext){StreamReaderreader=newStreamReader(controllerContext.HttpContext.Request.InputStream);stringjson=reader.ReadToEnd();if(string.IsNullOrEmpty(json))returnjson;JavaScriptSerializerserializer=newJavaScriptSerializer();objectjsonData=serializer.DeserializeObject(json);returnserializer.Deserialize<T>(json);}}我们承继IModelBinder接口,完成其办法:
publicobjectBindModel(ControllerContextcontrollerContext,ModelBindingContextbindingContext)便可。我们能够在Action内里如许利用:
publicActionResultTest1(ReceiverInforeceiverInfo)如许我们自界说的IModelBinder就会代替DefaultModelBinder完成数据绑定。
3、间接传送一个Json工具
下面两种办法并没有益用MVC的System.ComponentModel.DataAnnotations举行无效的数据考证。您大概必要本人手动考证,无疑增添了事情量。
我们尝尝这类体例。
前真个写法
varb={ReceiverId:5,ReceiverName:"will",Sex:"F",CreateDate:"2011-02-21"};$.ajax({url:"/Home/test1",type:"post",cache:false,data:b,success:function(data){alert(data.message);},error:function(xhr,a,b){alert(xhr.responseText);}});Action的写法:
publicActionResultTest1(ReceiverInforeceiverInfo)我们能一般的失掉绑定后的数据。并且我们还能使用System.ComponentModel.DataAnnotations举行数据考证。我们为ReceiverInfo做以下修改:
publicstringReceiverName{get;set;}并在前端为ReceiverName赋值为空字符串,再次实行,失掉提醒:

很好,不外我们有新的请求了,那就是传送更庞大的工具,好比工具套嵌工具,工具有汇合属性,这类体例不克不及胜任了。
4、使用MvcFutures的JsonValueProviderFactory
每版的MVC都有一个MvcFutures,内里会有一些分外的功效,这些功效有些会到场下一个版本中,而这些功效在某些时分很有效处。我检察了内里的类,发明有一个类JsonValueProviderFactory恰是处置庞大工具的提交和数据考证。因为json工具必要特定剖析才干利用默许的DefaultModelBinder,而这个剖析历程必要在ValueProvider阶段完成,以是必要完成特定的ValueProvider给DefaultModelBinder。我们必要完成一个ValueProviderFactory和IValueProvider,而MVC内里的DictionaryValueProvider<TValue>(承继了IValueProvider)已充足利用了,以是只必要承继ValueProviderFactory完成其办法:publicoverrideIValueProviderGetValueProvider(ControllerContextcontrollerContext)便可,详细代码您能够看JsonValueProviderFactory。
我们界说另外一个类:
ReceiverInfoChild
publicclassReceiverInfoChild{publicstringChildId{get;set;}}并为类ReceiverInfo增添一个属性publicList<ReceiverInfoChild>ReceiverInfoChild{get;set;}
我们把JsonValueProviderFactory拿出来放在项目内里,然后在Global.asax内里注册一下,就能够利用了。
$.ajax({url:"/Home/test1",type:"post",cache:false,data:test});0由于JsonValueProviderFactory中有:if(!controllerContext.HttpContext.Request.ContentType.StartsWith("application/json",StringComparison.OrdinalIgnoreCase))来判别出去的哀求是否是json工具,以是我们提交数据的时分必要如许写:
$.ajax({url:"/Home/test1",type:"post",cache:false,data:test});1个中JSON.stringify(ReceiverInfo)是将json工具转换成字符串,您能够到这里下载该类库。
在Action内里,我们如许写就能够了:
$.ajax({url:"/Home/test1",type:"post",cache:false,data:test});2看一下调试的了局:

完整一般绑定了值。我们再看看数据考证:


至此,我们实行了四种计划:
第一种计划,最贫苦,并且简单堕落(大概跟我团体不喜好拼接字符串有干系);
第二种计划,有必定的通用性,可是倒霉于数据考证;
第三种计划,通用,能够举行无效的数据考证,应对一样平常的需求够用了,可是处置更庞大的工具不可;
第四种计划,几近能够处置我们碰到的一切情形
别的,这是在ASP.NETMVC2中的利用,到了ASP.NETMVC3,微软已把JsonValueProviderFactory作为内置的功效了。
原文链接:http://www.ckuyun.com/WillMeng/archive/2011/03/01/json_binding_validate.html
【编纂保举】
来吧!老师们!我代表千千万万的asp.net/C#的初学者在这里呼唤着!

海妖 发表于 2015-1-18 12:01:50

众所周知,Windows以易用而出名,也因此占据不少的服务器市场。

愤怒的大鸟 发表于 2015-1-21 21:40:13

我的意思是.net好用,从功能上来说比JAVA强还是很明显的。

飘飘悠悠 发表于 2015-1-30 22:43:49

能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。

不帅 发表于 2015-2-6 16:30:13

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。

蒙在股里 发表于 2015-2-17 07:36:18

是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。

兰色精灵 发表于 2015-3-5 17:23:02

我的意思是.net好用,从功能上来说比JAVA强还是很明显的。

简单生活 发表于 2015-3-19 20:59:28

可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
页: [1]
查看完整版本: ASP.NET网页编程之怎样使用ASP.NET MVC保留电子商务网站用...