.Net环境下基于Ajax的MVC方案(1)

ajax

1、问题背景

现在,越来越多人开始尝试基于Ajax进行无刷新的Web开发,不过,在.Net环境下,应用Ajax并不是非常方便,这主要可能是由以下一些原因造成的:

•由于Ajax基于javascript的本质,使得开发者必须对javascript非常了解,起码,其javascript能力足以实现对callback返回内容对页面的更新,所以开发的门槛就有一定程度的上升

•当基于Ajax机制进行开发时,原有的基于postback方式下时,asp.net由后台逻辑代码(Model),aspx页面(View)、aspx.cs(Controller)构成的MVC构架其实失效了,当callback返回数据时,要么在client端用javascript解析返回内容以实现更新,要么则必须在server端构造好比较完整的html代码,再直接由javascript将该构造好的html设置给某个页面对象,很显然,这样一来,要实现一个最简单的callback功能,都要不少代码,并且是相对比较乱的代码,即使在即将到来的asp.net2.0该问题依然不会得到有效解决

2、本文目的

本文旨在充分利于现有的asp.net本身的特点和ajax的特性,提出一个用于在asp.net环境下进行基于ajax的web开发的MVC方案,以实现以下主要目的:

•Asp.Net环境下用于Ajax的清晰的MVC构架

•降低编程人员对过多javascript编码的依赖以降低编程门槛

•灵活的支持ajax模式下的常用开发方式

3、问题分析

如何实现以上几个主要目的呢?

1)要对xmlhttprequest对更良好的封装,以使调用方式更简单;

2)尽量在server端进行更新数据的构造,但是也要避免每次返回数据都手工构造,因此,就想到可以充分使用UserControl,由UserControl作为"View",对应的由ascx.cs文件作为"Controller",这样构成的MVC也是比较清晰的;

 

4、问题解决

基于以上思想,本人实现了以下一个组类库以简化该过程:

源码及范例下载

代码简析:

1)首先在client端,AjaxHelper.js封装了xmlhttprequest,并提供一个将现有的<form>序列化为形如param1=v1&param2=v2&...形式用于post的参数;

Updater(ajaxTemplate, output, params, onComplete)函数,用于实现一次callback调用

ajaxTemplate(必选):指定执行需要功能的UserControl路径

output(可选):填充返回数据的指定标签的引用或ID值

params(可选):形如param1=v1&param2=v2&...的post参数

onComplete(可选):可用于对返回数据进行特殊处理的回调函数,函数格式function(str),str为返回的数据

SerializeForm(form)函数,用于序列化<form>

form:可以是对指定<form>的引用或ID值

2)在server端,Ajax.aspx文件封装了对由客户端ajaxTemplate指定的UserControl的调用,其余的具体逻辑功能则在特定的UserControl及其ascx.cs内实现;

3)这样,具体执行一次callback时,编程人员只需在页面引用AjaxHelper.js,并在指定的位置通过javascript:Updater(ajaxTemplate, output, params, onComplete)进行调用,如果需要对某一form进行提交,则可调用javascript:SerializeForm(form)序列化该form并传给params,当然也可以手动构造params,并指定将返回数据通过设置output应用的页面或通过onComplete自定义处理。

4)由于充分使用UserControl,意味着,可以充分利用asp.net原有的web服务器端控件和数据绑定机制,这样其实,已经很大程度上简化了返回数据的构造,在ascx.cs中,通过Request.Form[ParamName]就能访问到client端传入的params,再访问逻辑代码获取源数据。

[1] [2]  下一页

时间: 2024-10-03 20:00:46

.Net环境下基于Ajax的MVC方案(1)的相关文章

.Net环境下基于Ajax的MVC方案

ajax 1.问题背景现在,越来越多人开始尝试基于Ajax进行无刷新的Web开发,不过,在.Net环境下,应用Ajax并不是非常方便,这主要可能是由以下一些原因造成的:?由于Ajax基于javascript的本质,使得开发者必须对javascript非常了解,起码,其javascript能力足以实现对callback返回内容对页面的更新,所以开发的门槛就有一定程度的上升?当基于Ajax机制进行开发时,原有的基于postback方式下时,asp.net由后台逻辑代码(Model),aspx页面(V

.NET2.0环境下的Ajax选型和应用(提供Demo源码下载)_AJAX相关

主题:.NET2.0环境下的Ajax选型和应用 研究需要解决的问题: 1 Ajax 应用框架的选型及其性能对比 2 如何应用 Ajax 3 应用 Ajax 过程中应该着重注意的问题 研究者: Jimmy.Ke 时间: 2006-11-13 一 Demo说明 Ajax Demo Web Site 是一个完整的 .NET Website ,其中包含 5 个 ASPX 页面及其对应的 CS 文件. 为了方便对比, Demo 中使用了三种 Ajax 应用方式: 一是使用微软提供的 Atlas 应用框架,

云环境下基于属性的用户权限管理研究

云环境下基于属性的用户权限管理研究 李拴保 范乃英 傅建明 祁慧敏 刘芊 用户权限分配是云计算服务的重要难题之一,提出了一种基于属性的用户权限管理方案.该方案以云服务中的新用户密钥分配为研究对象,论述了多方协同的用户签名验证解密管理机制,数据所有者和授权者共同选择属性集,数据所有者基于属性集定义密文访问结构,从而用户只有通过授权者认证才能获得解密密钥,达到用户权限升级与降级同步管理的目的.另外,本方案以群属性集更新为中心设计CP-ABE群签名验证机制,令数据所有者.用户和授权者组成群;基于群和自

云计算环境下基于Petri网的流程计费模型

云计算环境下基于Petri网的流程计费模型 黄卫东   于瑞强 通过分析云计算环境下服务模块流程组合的动态性,运用随机Petri网进行动态流程建模与追踪,给出了分层计费体系下的流程计费模型,使用Petri网对该计费流程进行建模分析和设计,便于云服务提供商实现基于状态的计费控制,从而优化计费策略.实现了云计算基于过程模型的服务计量,并根据该模型进行相应定价,用户即可按需付费.通过应用实例验证了该计费方法的有效性和可操作性,为云服务提供商计费决策提供了技术支撑. 云计算环境下基于Petri网的流程计

云计算环境下基于Mashup的一种电信网络能力服务提供模式

云计算环境下基于Mashup的一种电信网络能力服务提供模式 刘勇 乔秀全 李晓峰 在电信运营商逐步开放其电信能力API的背景下,基于Mashup的业务构建模式,提出了一种云计算环境下的电信网络能力服务提供模式.该模式将Mashup的理念移植到电信能力上,并将电信能力封装成Web Element的形式呈现给用户,进一步提升了电信网络能力服务的抽象层次. 关键词:云计算环境 Telecom 2.0 Mashup 服务提供模式 Web Element [下载地址]:http://bbs.chinacl

云计算环境下基于代表点增量层次密度聚类的微博事件检测及跟踪

云计算环境下基于代表点增量层次密度聚类的微博事件检测及跟踪 冯永  韩楠  贾东风 为从微博服务平台产生的大量实时信息中抽取新闻事件,提出了一套完整的云计算环境下的微博事件检测跟踪算法.首先采用新的基于微博转发数和评论数的权值计算方法,将微博文本表示成向量空间模型:再利用基于代表点的增量层次密度聚类(RIHDBSCAN)算法抽取关键词,最终实现新闻事件的检测和跟踪.针对单一节点无法快速高效地处理海量微博数据的问题,将算法部署在云计算平台Hadoop上.通过在新浪微博平台上获取的真实数据进行实验,

云环境下基于神经网络和群搜索优化的资源分配机制

云环境下基于神经网络和群搜索优化的资源分配机制 孙佳佳 王兴伟 高程希 黄敏 在云环境下,各种闲置资源可以通过池化形成资源池,进而利用虚拟化技术将资源池中的不同资源组合以服务的形式提供给用户使用,因此需要合理而有效的机制来分配资源.针对云环境下资源的特点,将经济学和智能方法相结合,提出了一种基于双向组合拍卖的智能资源分配机制.在该机制中,提出了基于体验质量(quality ofexperience,简称QoE)的威望系统,引入威望衰减系数和用户信誉度,降低拍卖中恶意行为造成的影响,为资源交易提供

分布式环境下基于整体最优的资源分配研究

分布式环境下基于整体最优的资源分配研究 大连理工大学  张丹闯 在科技化和信息化飞速发展的今天,计算机系统已经开始由单机系统向分布式系统方向转变.如何在分布式环境下通过互连网络整合不同资源以提供更高的计算和服务能力已经成为目前关注的焦点.本文设计并实现一种基于资源代理的网格平台,针对两种典型的分布式环境中的资源分配问题进行研究. 用户应用在分布式环境中执行时,往往被分成多个独立或者非独立的任务,非独立的任务之间存在执行顺序和数据传输.本文分别针对独立任务和非独立任务资源分配问题建立问题描述模型,

云环境下基于二维节点矩阵的分级多表连接

云环境下基于二维节点矩阵的分级多表连接 陶永才 周梦雪 石磊 卫琳  曹仰杰 随着"大数据"时代的到来,分布式数据处理得到了广泛的应用和发展.在基于云计算的海量数据处理中,复杂处理要求逐渐增多,数据分析通常需要跨越多个数据集,因此亟需高效的多表连接机制.现有的基于MapReduce的多表连接机制多采用串行级联方式实现多个不同数据集连接,操作灵活但效率不高.本文在分析现有并行连接模型的基础上,提出基于二维节点矩阵的分级多表连接模型TD-HMJ.TD-HMJ在一次Map过程中处理全部连接属