在ASP.NET MVC中使用
-Microsoft ASP.NET Ajax
-jQuery
Ajax的使用范围
-适合Ajax的场景
-不适合Ajax的场景
Ajax软肋:
不保存Http状态,没有回退,状态保留
不支持JavaScript脚本
Ajax成瘾症
Ajax使用实例
-每个Ajax请求都会制定确定的Action
-Action会判断是否来自Ajax
-针对Ajax请求必须返回一个特殊的View
脚本启用问题
<%using (Ajax.BeginForm(“HelloAjax”,
new AjaxOptions{ UpdateTargetId= “results” }))
{ %>
<%= Html.TextBox(“query”, null, new {size=40}) %>
<input type=”submit” />
<%} %>
<div id=”results”></div>
<script src=”/Scripts/MicrosoftAjax.js” type=”text/javascript”></script>
<script src=”/Scripts/MicrosoftMvcAjax.js” type=”text/javascript”></script>
写在低下,页面先加载后加载脚本
加载是阻塞模式,后加载脚本好 //小技巧
Action
public string HelloAjax(string query)
{
return “You entered: “ + query;
}
<form action="/Home/HelloAjax" method="post"
onsubmit=”Sys.Mvc.AsyncForm.handleSubmit(this, new Sys.UI.DomEvent(event),
{ insertionMode: Sys.Mvc.InsertionMode.replace,
updateTargetId:'result'});">
js禁用咋办?
解决脚本启用问题
x-requested-with: XMLHttpRequest
query=Hello%20Ajax!&X-Requested-With=XMLHttpRequest
检查是否有x-requested-with
public ActionResultHelloAjax(string query)
{
//确认请求来自于ajax
string isAjaxPost= Request.Form[“X-Requested-With”] ??
Request.Headers[“X-Requested-With”];
if (!String.IsNullOrEmpty(isAjaxPost))
{return Content(“You entered: “ + query);} //ajax
return RedirectToAction(“Index”, new { query = query }); //http请求
}}
//有魔术字[“X-Requested-With”] ,应该用函数封装
//make sure this is an Asynchpost
if (Request.IsAjaxRequest())// 这是微软自带的
{
return Content(“You entered: “ + query);
}
else
{
return RedirectToAction(“Index”, new { query = query });
}
}
使用PrtialView返回
[<%if(ViewData.Model.Count>0){ %>
<table cellpadding=”5”>
<tr><td><b>Product</b></td>
<td><b>Price</b></td></tr>
<%foreach(MVCAjax.Models.Productp in ViewData.Model)
{ %>
<tr><td><%= Html.Encode(p.ProductName) %></td>
<td><%= p.UnitPrice%></td></tr>
<%} %>
</table>
<%} %>
PartialView返回
IList<Product> products = new List<Product>();
if(!String.IsNullOrEmpty(query)){
NorthwindDataContextdb= new NorthwindDataContext();
varproducts = from p in db.Products
where p.ProductName.StartsWith(query)
select p).ToList();
}
if(Request.IsAjaxRequest())
{return View(“ProductSearchResults”, products);
}else{
return View(products);
}
<div id=”results”><%Html.RenderPartial(“ProductSearchResults”, ViewData.Model); %></div>
2011-4-22 23:54 danny
-Microsoft ASP.NET Ajax
-jQuery
Ajax的使用范围
-适合Ajax的场景
-不适合Ajax的场景
Ajax软肋:
不保存Http状态,没有回退,状态保留
不支持JavaScript脚本
Ajax成瘾症
Ajax使用实例
-每个Ajax请求都会制定确定的Action
-Action会判断是否来自Ajax
-针对Ajax请求必须返回一个特殊的View
脚本启用问题
<%using (Ajax.BeginForm(“HelloAjax”,
new AjaxOptions{ UpdateTargetId= “results” }))
{ %>
<%= Html.TextBox(“query”, null, new {size=40}) %>
<input type=”submit” />
<%} %>
<div id=”results”></div>
<script src=”/Scripts/MicrosoftAjax.js” type=”text/javascript”></script>
<script src=”/Scripts/MicrosoftMvcAjax.js” type=”text/javascript”></script>
写在低下,页面先加载后加载脚本
加载是阻塞模式,后加载脚本好 //小技巧
Action
public string HelloAjax(string query)
{
return “You entered: “ + query;
}
<form action="/Home/HelloAjax" method="post"
onsubmit=”Sys.Mvc.AsyncForm.handleSubmit(this, new Sys.UI.DomEvent(event),
{ insertionMode: Sys.Mvc.InsertionMode.replace,
updateTargetId:'result'});">
js禁用咋办?
解决脚本启用问题
x-requested-with: XMLHttpRequest
query=Hello%20Ajax!&X-Requested-With=XMLHttpRequest
检查是否有x-requested-with
public ActionResultHelloAjax(string query)
{
//确认请求来自于ajax
string isAjaxPost= Request.Form[“X-Requested-With”] ??
Request.Headers[“X-Requested-With”];
if (!String.IsNullOrEmpty(isAjaxPost))
{return Content(“You entered: “ + query);} //ajax
return RedirectToAction(“Index”, new { query = query }); //http请求
}}
//有魔术字[“X-Requested-With”] ,应该用函数封装
//make sure this is an Asynchpost
if (Request.IsAjaxRequest())// 这是微软自带的
{
return Content(“You entered: “ + query);
}
else
{
return RedirectToAction(“Index”, new { query = query });
}
}
使用PrtialView返回
[<%if(ViewData.Model.Count>0){ %>
<table cellpadding=”5”>
<tr><td><b>Product</b></td>
<td><b>Price</b></td></tr>
<%foreach(MVCAjax.Models.Productp in ViewData.Model)
{ %>
<tr><td><%= Html.Encode(p.ProductName) %></td>
<td><%= p.UnitPrice%></td></tr>
<%} %>
</table>
<%} %>
PartialView返回
IList<Product> products = new List<Product>();
if(!String.IsNullOrEmpty(query)){
NorthwindDataContextdb= new NorthwindDataContext();
varproducts = from p in db.Products
where p.ProductName.StartsWith(query)
select p).ToList();
}
if(Request.IsAjaxRequest())
{return View(“ProductSearchResults”, products);
}else{
return View(products);
}
<div id=”results”><%Html.RenderPartial(“ProductSearchResults”, ViewData.Model); %></div>
2011-4-22 23:54 danny
发表评论
-
10.2Asp.net MVC各层使用TDD方式
2011-05-01 12:09 803Asp.net MVC各层使用TDD方式 Asp.net M ... -
10.1TDD简介
2011-04-30 23:09 557MVC中的测试驱动开发 为什么需要TDD TDD的由来 它 ... -
9、MVC程序安全限定
2011-04-29 22:14 1809常见网络安全攻击隐患 针对Asp.net MVC防御体系 安 ... -
8.2ASP.NET MVC2使用Ajax类库实例
2011-04-29 13:05 922ASP.NET MVC2使用Ajax类库实例 .net fo ... -
7.2自定义开发Filter
2011-04-27 16:04 624Custom Filters ➤IAuthorization ... -
7.1Filter的使用
2011-04-26 22:20 499Filter的使用 -对Action的附加说明 Asp.n ... -
6.3Action的调用与属性
2011-04-26 09:43 665Action的调用与属性 1、唤起Action R ... -
6.2ActionResult的使用
2011-04-25 19:14 681ActionResult public abstract c ... -
6.1Controller类的基本构成
2011-04-25 09:17 668关于Controller Controller是什么? C ... -
5.6在Webform中使用routing
2011-04-23 22:48 667在Webform中使用routing 在Asp.net 4中使 ... -
5.5URL和Action匹配的秘密
2011-04-22 09:11 899Routes是如何把URL映射为Action -请求路由管道 ... -
5.4使用routing生成URL
2011-04-21 11:05 600使用routing生成URL URL生成器概述 1、质询每个 ... -
5.3使用Routes
2011-04-20 09:11 7395.3使用Routes 注册Area Route publi ... -
5.2Routes匹配URL的工作方式
2011-04-19 08:55 850URL的匹配规则 -site/{controller}/{ac ... -
5.1Url和Routes介绍
2011-04-17 12:05 6485.1Url和Routes介绍 关于Urls -域名好记好拼 ... -
4、View引擎介绍
2011-04-16 22:03 647View引擎介绍 Request =>Routing= ... -
3、HtmlHelper类(续)
2011-04-16 13:41 650HtmlHelper类(续) Html.TextArea 用 ... -
2、HtmlHelper类
2011-04-15 22:33 1101HtmlHelper类 <%Html. MVC1 & ... -
1、View层
2011-04-15 09:06 628ViewDataDictionary类 View 负责输出 ...
相关推荐
本文将详细介绍如何使用Struts2.1.8.1与jQuery1.4.2来返回JSON数据,包括必要的依赖包引入、后端逻辑编写以及配置文件设置等方面。 #### 一、引入必要依赖包 为了使Struts2能够支持JSON数据格式,我们需要引入一...
程序描述:本章介绍开发AJAX的开源框架GWT(Google Web Toolkit) 。最典型的Google Maps和Gmail等Google服务也正是基于此框架开发的。读者将能够快速掌握GWT的各种开发所涉及到的内容。 /firstgwt/FirstGWT....
下面将详细介绍这些组件以及它们之间的整合方式。 首先,jQuery EasyUI是一个基于jQuery的UI库,它提供了一系列轻量级、易于使用的组件,如对话框、表格、菜单等,用于快速构建用户界面。EasyUI简化了前端开发,使...
Struts2.1.8版本包含了对Ajax的支持,以及与各种视图技术(如JSP、FreeMarker、 Velocity)的集成,使得开发者能够构建动态、交互性强的Web应用。 **Spring2.5.6** Spring框架以其轻量级、非侵入式的设计理念深受...
这个版本引入了许多新特性,如LINQ(Language Integrated Query,语言集成查询)、ASP.NET AJAX、WCF(Windows Communication Foundation)以及WF(Windows Workflow Foundation)等,这些都极大地提升了开发者的...
8.1Web页表单元素的组成 8.2在普通的Web页中插入表单 8.3获取表单数据的两种方法 8.4PHP传参的常用方法 8.5在Web页中嵌入PHP脚本 8.6在PHP中获取表单数据 8.7对URL传递的参数进行编码解码 8.8PHP与Web表单的综合应用...
8.1Web页表单元素的组成 8.2在普通的Web页中插入表单 8.3获取表单数据的两种方法 8.4PHP传参的常用方法 8.5在Web页中嵌入PHP脚本 8.6在PHP中获取表单数据 8.7对URL传递的参数进行编码解码 8.8PHP与Web表单的综合应用...
2. **Base Class Library (BCL)**:提供了一系列类库,供开发者使用,涵盖输入/输出、网络通信、数据访问等多个领域。 3. **ASP.NET 3.5**:用于构建Web应用程序,增加了对Ajax的支持,提升了用户体验。 4. **...
根据给定的部分内容,可以看到使用的是`struts2-json-plugin-2.1.8.1.jar`这个JAR包。该插件包含处理JSON相关的类库,使得Struts2能够识别并处理JSON格式的数据。具体来说,插件中的`struts-plugin.xml`配置文件定义...
分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计进度条、设计工具栏和菜单栏、设计面板、设计表格、设计表单、设计数据表、对Ajax的支持...
分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计进度条、设计工具栏和菜单栏、设计面板、设计表格、设计表单、设计数据表、对Ajax的支持...
6. **ASP.NET 3.5**:更新了Web Forms、ASP.NET AJAX、ASP.NET MVC等技术,增强了Web开发能力,引入了更高效的页面生命周期管理,以及对异步处理和AJAX的支持。 7. **ADO.NET Entity Framework**:这是.NET 3.5中...
8.1 一维数组与多维数组 119 8.1.1 一维数组简介 119 8.1.2 多维数组简介 119 8.2 常用的数组操作 120 8.2.1 数组的创建与调用 120 8.2.2 数组的更新 121 8.2.3 数组元素的遍历 122 8.3 数组索引与键值的操作技巧 ...
它的核心组成部分包括公共语言运行时(CLR)和类库,这些类库提供了丰富的API集合,支持多种编程语言,如C#、VB.NET和C++/CLI。 2. **WCF(Windows Communication Foundation)**: WCF是.NET Framework 3.5中的一...
对于Myeclipse 5.5,需要手动添加8.5或8.6版本中的支持jar到项目类库。 整合的关键步骤包括: 1. 准备工作: 在原有的Struts2项目中,除了基本的Struts2库,还需要引入两个额外的jar包:struts2-json-plugin-2.1....
#### 一、ZenTaoPHP框架介绍 **1.1 什么是ZenTaoPHP?** ZenTaoPHP是一款轻量级、高效且友好的PHP MVC开发框架。该框架的设计理念深受《编程之道》与《编程之禅》两本书的影响,“Zen”代表着“禅”,而“Tao”则意...
ExtJS提供了强大的数据处理能力,可以通过Ajax技术与服务器端进行通信,实现数据的加载、保存等功能。 ### 八、数据存储Store #### 8.1 Store Store是ExtJS中用于存储数据的模型。它可以连接到远程数据源,实现...
这个"struts2核心jar包"是Struts2框架的核心组件,包含了运行一个Struts2应用所需的基础类库和接口。在开发过程中,这个jar包扮演了至关重要的角色,因为它是实现Struts2功能的基础。 1. **Struts2框架概述** ...
开发平台为Windows 8.1,这是微软发布的一款个人计算机操作系统,提供了良好的用户体验和高效的系统性能。 在数据库方面,项目选择了ACCESS 2010作为数据存储和管理的核心。Access是微软Office套件的一部分,它是一...