webform 中使用ajax
常用的方式有 js –> WebService , js->*.ashx, js->WebAPI, js->MVC Controller->Action. 前两种就不说了.
一、Webform中 js-> WebAPI .
1.在需要的地方,直接添加WebAPI

2.在Global.asax中设置一下.
public class Global : System.Web.HttpApplication
{ void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
RouteTable.Routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); //api
var route = RouteTable.Routes.MapHttpRoute(name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional });
route.RouteHandler = new SessionStateHttpControllerRouteHandler();
3.改一下WebAPI,需要理解FormBody,FromUri的区别.返回Json还是xml格式,是根据请求时的ContentType决定的.
public class UserController : ApiController
{
// GET api/<controller>
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
} // GET api/<controller>/5
[HttpGet()]
//[ActionName("getValue")]
public string GetById([FromBody]dynamic obj)
{
var session = HttpContext.Current.Session;
var user = HttpContext.Current.User;
return "value" + "aabbccdd";
} // POST api/<controller>
[HttpPost]
public object Test(dynamic value)
{
var x = value["A"];
return x;
}
4,js调用 WebAPI方法,注意发送数据的格式.是字符串,不是Json.
function test() {
var options = {};
options.url = "/api/user/Test";
options.type = "post";
options.data =
JSON.stringify
({ 'A': 1, 'B': 2 });
options.contentType = "application/json";
options.success = function (customer) {
alert(customer);
};
options.error = function (err) { alert(err.statusText); };
$.ajax(options);
};
function submitForm() {
var s = $("#from1").serializeArray();
alert(s);
var options = {};
options.url = "/api/user/submit";
options.type = "post";
options.contentType = "application/json";
options.data = JSON.stringify(s);
options.success = function (customer) {
alert(customer);
};
options.error = function (err) { alert(err.statusText); };
$.ajax(options);
}
二,webform 中 js-> asp.net mvc
1,在webform中添加 asp.net mvc相关的程序集引用.建议直接从asp.net mvc项目拷贝引用.

2,在web.config中需要设置作这些设置.
<compilation debug="true" targetFramework="4.0" >
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</assemblies>
</compilation>
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages"/>
</namespaces>
</pages>
3,在webform程序中,添加一个controller

4,在Global.asax.cs中添加mvc路由
public class Global : System.Web.HttpApplication
{ void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
RouteTable.Routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); //mvc
RouteTable.Routes.MapRoute(
name: "Default",
url: "mvc/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
5,在controller中添几个测试方法,同样需要注意js调用时的数据格式,默认只接收post调用.get请求时.需设置JsonRequestBehavior.AllowGet
public class HomeController : Controller
{
public JsonResult Index()
{
ViewBag.Message = "修改此模板以快速启动你的 ASP.NET MVC 应用程序。"; return Json(,JsonRequestBehavior.AllowGet);
} public JsonResult About()
{
ViewBag.Message = "你的应用程序说明页。";
return Json("aaa");
} public ActionResult Contact(int age,string name)
{
ViewBag.Message = "你的联系方式页。";
return Json("bbbbbbbbbbbbb");
}
6,添加测试js
function mvcpost() {
var options = {};
options.url = "/mvc/home/Contact";
options.type = "post";
options.data = JSON.stringify({ 'age': 1, 'name': 'xiaowy' });
options.contentType = "application/json";
options.success = function (customer) {
alert(customer);
};
options.error = function (err) { alert(err.statusText); };
$.ajax(options);
}
在上面的代码中,用到了一个自定义的类 SessionStateHttpControllerHandler. 这个是为了在Web API中使用 session.
public class SessionStateHttpControllerHandler : HttpControllerHandler, IRequiresSessionState
{
public SessionStateHttpControllerHandler(RouteData routeData)
: base(routeData)
{ }
} public class SessionStateHttpControllerRouteHandler : HttpControllerRouteHandler
{
protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new SessionStateHttpControllerHandler(requestContext.RouteData);
}
}
如果你照上面的步骤仍然不成功,那就下载这个,自己修改一下.
webform 中使用ajax的更多相关文章
- 在webform中使用ajax
如果你用过Asp.net webform, 说明你也算是.NET 开发的老兵了.WEBform应该是2011-2013左右,当时还用visual studio 2005. visual studio ...
- 【Ext.Net学习笔记】01:在ASP.NET WebForm中使用Ext.Net
Ext.NET是基于跨浏览器的ExtJS库和.NET Framework的一套支持ASP.NET AJAX的开源Web控件,包含有丰富的Ajax运用,其前身是Coolite. 下载地址:http:// ...
- ASP.NET WebForm中前台代码如何绑定后台变量
转载自 http://www.cnblogs.com/lerit/archive/2010/10/22/1858007.html 经常会碰到在前台代码中要使用(或绑定)后台代码中变量值的问题.一般有& ...
- jQuery中操作Ajax方法小结
有时候,越深入去了解一个点,越发觉得自己无知,而之前当自己晓得一两个片面的点还洋洋自得,殊不知,这是多么讽刺 jQery对Ajax操作进行了封装,常见的 ajax()属于最底层的方法,使用频率很高的 ...
- ASP.Net 中操作Ajax
有时候,越深入去了解一个点,越发觉得自己无知,而之前当自己晓得一两个片面的点还洋洋自得,殊不知,这是多么讽刺,JQuery中有很多优势,比如异步提交值,部分刷新,给用户很好的体验感.目前为止,大部分项 ...
- [转]WebForm中使用MVC
本文转自:https://www.cnblogs.com/encoding/articles/3556046.html 前言 掐指一算,3年没写博了,好懒的说... 众所周知,MVC现在越来越火了,不 ...
- WebForm中使用MVC
http://www.cnblogs.com/encoding/articles/3556046.html ********************************************** ...
- WebForm页面使用Ajax
AJAX:”Asynchronous JavaScript and XML” 中文意思:异步JavaScript和XML.指一种创建交互式网页应用的网页开发技术.AJAX并非缩写词,而是由Jesse ...
- Juery返回Json数据格式,webForm中使用
此篇的详细篇 //webForm中使用异步就会用到一般处理程序,前台调用一般处理程序这个页面去执行里面的方法 using System.Web.Script.Serialization; Newton ...
随机推荐
- Android中webview和js之间的交互(转)
http://www.cnblogs.com/leizhenzi/archive/2011/06/29/2093636.html 1.android中利用webview调用网页上的js代码. Andr ...
- 初步认识html以及表格的制作
12.21,冬至,天空中还下着小雨,雾霾也没有散去,但是也没有冲散节日的气氛,心情也是倍儿好. 今天学习了不少的内容,对我来说是对之前所学的一个巩固,内容比较多也比较杂乱一些,下面以例子的形式来表现: ...
- angular+ionic返回上一页并刷新
假定当前页面为editCata页面,要返回的是cataDetail页面.目前我找到两种方法实现返回上一页并刷新,如果以后有其它方法,再继续添加. 1.在editCataCtrl.js中注入$ionic ...
- centos从日志文件查找关键字的日志并生成文件
grep "unset user wechat user_id:" app* | tee wechat_log
- 半小时快速了解redis,基于ubuntu 12.04 + redis 2.8.9
一.什么是redis ? 其官方介绍是: Redis is what is called a key-value store, often referred to as a NoSQL databas ...
- Ant编译提示“Unsupported major.minor version 52.0”
今天在使用Ant编译build.xml文件时报错"java.lang.UnsupportedClassVersionError:com/sun/tools/javac/Main : Unsu ...
- php 连接 mssql 常见的所有问题
php连接mssql时 ntwdblib.dllPHP连接MSSQL配置和PHP代码演示 收藏 如果实现了PHP和MySQL链接了,PHP和MSSQL的链接其实很简单: 支持MSSQL的本地链接和远程 ...
- cesium+ geoserverTerrainProvide+png展示3D高程图展示
一.发布png到geoserver的imagepyramid // translate png to tif epsg:4326 File png = new File(pngPathStr); Bu ...
- NC nc5.x笔记(编辑中)
一.设置卡片界面下 金额字段负数为红色! /** * 设置卡片界面下 金额字段负数为红色! */ private void repaintBodyMoneyColor(){ if(!isListPan ...
- 安装pillow错误的解决方案
错误信息: ValueError: jpeg is required unless explicitly disabled using --disable-jpeg, aborting ...