MVC5的Controller与AJAX(JQ)

前端之家收集整理的这篇文章主要介绍了MVC5的Controller与AJAX(JQ)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

先说下AJAX,异步数据传输。它不是一个东西,而是一种技术(效果)。可以通过不同的方式来实现,比如js手工,比如JQ调用方法,还比如更高一级的封装再调用。用到的也是HTTP REST方法。下面用的是JQ的Get()方法

mvc5的访问规则是按照RouteConfig中规定的URL格式来访问。如:

url:"{controller}/{action}/{id}";

它会先去寻找对应名字的Controller,当然不算后缀“Controller”。然后通过Controller里有没有action的同名方法,若有,则执行。没有就访问未知。

普通的mvc5包含视图控制器,继承于Controller。它既能控制界面层访问,也能控制数据访问,不过没人这么玩儿。只拿它做界面视图的映射。

publicclassXXXXXController:Controller//“XXXXX”就是控制器的名字,当然文件名后面还要加上Controller。

而我们需要与界面进行数据交互、ajax。肿么办?当然网上神马资料的都是说用models,controllers肿么肿么用。太复杂。。。。我们使用ajax与webapi。

我们只需要在建立mvc5项目的时候,给它把webAPI勾上。干嘛的呢?专门做数据访问的API的。URL访问方式在WebApiConfig文件里面就能看到,也可以和RouteConfig一样自己修改访问方法。看看我自建TestWebApi类的定义:

publicclassTestWebApiController:ApiController

webapi 的控制器是继承于“ApiController”的,他和RouteConfig一样,都有支持默认的REST方法。通过URL访问这些方法的时候,会根据你的请求类型自动解析,而不用带上方法名。

但是默认的方法不好用,我想自己定义方法。就要用上标记,一个是动作的名字,一个是相应的请求类型。不标记就不会被访问。

[ActionName("GetPersons")]
[HttpGet]
publicstringGetPersons()
{
return"teststring";
}

注:URL路由是使用的字典匹配而无需同名,所以取名要谨慎。有同名前缀神马的,一定要小心。如有个一方法叫Get();

这样一个web api就做好了,接着需要的就是被访问了。转到界面上,我的js代码

$.getJSON("http://localhost:XXXX/api/[ControllerName]/[CustomerAction]",[Args],function(data){
SetText(data);
});

按照WebApiConfig的访问规则完成URL,根据你需要访问的Action有无方法,来确定Args是空还是有。若有,则可以用Object类实例化一个对象,不管你是一个参数,还是几个。设置Object对象与你Action方法的同名属性的值,将这个Object对象当作参数传过去就行了。如我有与一个叫key的参数:

varobject=newObject();
object.key="23w23232323";

JQ的get方法第三个参数就是成功需要回调的函数,而且是函数体,不能传函数名。如果想要回调某个已经编写好的函数,则定义一个匿名函数,在其中调用你想要调用方法,如上面代码所示。参数就是访问的webAPI方法的返回值,随便定义变量明。

接着就是拿到数据控制显示的事了。。那是另一个故事了。

原文链接:https://www.f2er.com/ajax/164022.html

猜你在找的Ajax相关文章