千家信息网

怎么看待.Net环境下基于Ajax的MVC方案

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这期内容当中小编将会给大家带来有关怎么看待.Net环境下基于Ajax的MVC方案,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。现在,越来越多人开始尝试基于Ajax进
千家信息网最后更新 2026年11月02日怎么看待.Net环境下基于Ajax的MVC方案

这期内容当中小编将会给大家带来有关怎么看待.Net环境下基于Ajax的MVC方案,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

现在,越来越多人开始尝试基于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,并提供一个将现有的

序列化为形如param1=v1?m2=v2&...形式用于post的参数;

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

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

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

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

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

SerializeForm(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,再访问逻辑代码获取源数据。

5、范例

包含在源码中的范例实现了一个简单的无刷新获取博客园首页内容到一个textarea的功能,详见源码!

部分范例源码:

Default.aspx < %@ Page language="c#" Codebehind="Default.aspx.cs" AutoEventWireup="false"
    Inherits="CN.Teddy.AjaxHelper.WebForm1" %>< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >< HTML>< HEAD>< title>WebForm1< /title>< meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">< meta name="CODE_LANGUAGE" Content="C#">< meta name="vs_defaultClientScript" content="JavaScript">< meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">< script type="text/javascript" language="javascript" src="js/AjaxHelper.js">< /HEAD>< body>< form id="Form1" method="post" runat="server">< div id="view2">loading< /div>< script type="text/javascript">Updater('AjaxTemplate/GetPageSrc', 'view2', 'url=http://www.cnblogs.com');< /script>< /form>< /body>< /HTML>

AjaxHelper.js摘要:

var AjaxHelperUrl = new String("Ajax.aspx"); var Updater = function(ajaxTemplate, output, params, onComplete){if (typeof output == 'string'){output = $(output);}new Ajax.Request( 'Ajax.aspx', { onComplete: function(transport) { if (output !=null)
   { output[xss_clean] = FormatContent(transport.responseText); } if (onComplete !=null)
   { onComplete(FormatContent(transport.responseText)) } },
    parameters: params + '&AjaxTemplate=' + ajaxTemplate });}var SerializeForm = function(form){return Form.serialize(form);}var FormatContent = function(str){var content = new String(str);var prefix = new String("< !--AjaxContent-->");content=content.substring(content.indexOf(prefix, 0)+prefix.length,content.length -9);return content;}UserControl GetPageSrc.ascx.cs摘要:private void Page_Load(object sender, System.EventArgs e){lbUrl.Text = Request.Form["url"];System.Net.WebClient client = new System.Net.WebClient ();client.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0;
    Windows NT 5.1; .NET CLR 1.1.4322)");try{txtPageSource.Text = new System.IO.StreamReader(client.OpenRead(lbUrl.Text),
   System.Text.Encoding.UTF8).ReadToEnd();}catch(Exception ex){throw ex;}}

上述就是小编为大家分享的怎么看待.Net环境下基于Ajax的MVC方案了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

数据 代码 开发 环境 内容 页面 函数 功能 方案 序列 方式 源码 目的 范例 逻辑 问题 分析 封装 更新 编程 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网电商科技 互联网是不是新科技 鸠鸠互联网科技 金融科技还是互联网 盈实互联网科技 互联网科技公司电话 互联网科技小额贷款 伴你行互联网科技有限公司 互联网科技英文翻译 常德市电业局互联网科技部 语蝶互联网科技有限公司 湖南一路畅行互联网科技 江阴互联网智能科技产品进口 链环科技传统企业怎么转型互联网 滨湖区互联网智能科技产品有哪些 互联网公司高科技产品 半导体是互联网高科技吗 广东鹅鹅鹅互联网科技有限公司 第三届互联网大会安防黑科技 知域互联网科技有限公司官网 天津市摩尔互联网科技 智慧科技互联网 菲比寻常互联网科技 新兴科技互联网创新大赛颁奖典礼 广州市恰铎互联网科技有限公司 长沙茂晟互联网科技有限公司 南通创西澳互联网科技有限公司 广东工业互联网大赛深圳学泰科技 领航科技大厦互联网公司 郑州欣桑互联网科技有限公司
0