专栏首页日常工作总结ASP.NET MVC中使用AJAX传参技巧
原创

ASP.NET MVC中使用AJAX传参技巧

1. 客户端使用Querystring传参

    一般情况下进行GET请求才会这么做,类似在浏览器的地址栏敲进去的url地址那样,客户端的js代码如下,这里对服务器端做了一个请求(这里用GET),请求通过url上的Querystring传了五个参数:

    下面是服务器端的代码,请注意这个Action(方法)是有参数的,直接接受传客户端传过来的参数

客户端调用AjaxGet方法,得到的结果如下:

2. 客户端使用使用Json传参

    使用第一种方法传参的话代码看起来比较简洁,只需要对url进行赋值就行,但是如果参数多的话…会乱,所以一般推荐用data属性传参,以下是使用json对data属性进行赋值传参,和第一种方法一样也是传那五个参数,这次用POST:

    不管是开发还是维护,我们都比较希望看到的是上面这种写法,服务器端的代码不变,当然得到的结果也是一样了(哦不…请求方式变为POST了)

2.5 服务器端使用对象接受参数

    上面两种方法有个问题未能解决,那就是服务器端Action方法中的变量多起来也是件麻烦事,ASP.NET MVC框架考虑到这点,我们可以定义一个类,如下:

    端的代码修改如下,传参的变化将不会对Action方法的参数有影响:

3. 客户端使用数组传参

    有些时候Ajax请求的参数很复杂,服务器端Action方法的参数可能是一个包含其他对象或者数组的对象,例如2.5中的Option可能是这样定义的:

    问题出现了,客户端还可以用json传参么,我试过是不可以的(也许是我使用的jquery版本或者asp.net mvc版本支持不够好??),但可以采用以下方法:

    用数组对data赋值,这里数组的写法有点讲究,就是每个item都是一个json,两个属性分别是name和value,作用就无需解释啦。

服务器端的代码小改一下,如下:

客户端调用AhaxPostWithArray方法,得到的结果如下:

 本人在实际项目中,使用到的前后端传参数技巧:

前端:

SysModel是Javascript中的一个自定义对象 

var jsonText = JSON.stringify(SysModel);

$.ajax({
    type: "POST",
    url: "{0}/SR/GetPublishInfoFromWeb".format(appRootPath),
    processData: true,
    data: { jsonText: jsonText },
    success: function (json) {
         //do something
        } 
}); 

后台接收:

SystemModel s = JsonConvert.DeserializeObject<SystemModel>(jsonText);

 另一种方式:

 前端:

$.getJSON("{0}/SR/PublishPrepare".format(appRootPath), { PID: PlanID }, function (json) {
     PublishProcessing();
   }
);

后台:

public ActionResult PublishPrepare(Guid PID)

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • TKE上服务暴露的几种方式

    预备知识 1. K8S 上 Service 类型 平台相关基础知识 2. TKE 上四层网络流量暴露方式 3. TKE 上七层网络流量暴露方式 4. TKE 上...

    sherlock99
  • Git常用命令汇总

    Git配置 git config --global user.name "xx" git config --global user.email "xx@gma...

    sherlock99
  • SQL Server 2012 AlwaysOn集群日志收缩

    BACKUP LOG 数据库名 TO DISK='NUL:'with STATS = 1

    sherlock99
  • jdbc学习总结3------javab

     看dao中的内容,我们发现几个方法中的代码有很多重复的!!所以在下一篇文章中,我们要对代码进行优化!

    py3study
  • 再见 Docker,是时候拥抱下一代容器工具了

    Linux 容器是由 Linux 内核所提供的具有特定隔离功能的进程,Linux 容器技术能够让你对应用及其整个运行时环境(包括全部所需文件)一起进行打包或隔离...

    iMike
  • JDK1.9-常用类时间日期类

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    cwl_java
  • oss 客户端查看私有bucket

    以谁为师
  • Python常用的内置函数

      2 getattr  根据字符串的形式,去对象中找成员.   第一个参数是(模块或对象或类),  第二个参数是(用户输入或值)getattr(object,...

    py3study
  • 【前沿】Pytorch开源VQA神经网络模块,让你快速完成看图问答

    【导读】近期,NLP专家Harsh Trivedi使用Pytorch实现了一个视觉问答的神经模块网络,想法是参考CVPR2016年的论文《Neural Modu...

    WZEARW
  • 【我的漫漫跨考路】数据结构之单链表线性存储实现 Beta

    正文之前 ? 昨天晚上阶段性的完成了一部分数学的复习,所以今天打算撸一撸代码,然后发现提电脑忘指针。所以自己磕磕盼盼,对照了一下网上的代码,总算把线性存储单链表...

    用户1687088

扫码关注云+社区

领取腾讯云代金券