最近,新学c# mvc,通过ajax post方式传递数据到controller。刚开始传递参数,controller中总是为null。现记录一下,可能不全,纯粹记个学习日记。

重点在于参数的方式,代码为例子

1、这里  dataType: "json",表示返回的格式是json

前端: 
var saveAlbum = function () { $.ajax(
{
url: "/Home/PostAlbum",
type: "POST",
dataType: "json",
data: { AlbumName: "shanghai", Entered: "5/9/2013" },
success: function (result) {
alert(result);
},
error: function (xhr, status, p3, p4) {
var err = "Error " + " " + status + " " + p3;
if (xhr.responseText && xhr.responseText[] == "{")
err = JSON.parse(xhr.responseText).message;
alert(err);
}
});
}
 controller: 

public ActionResult PostAlbum(test test)
{
string str = String.Format("保存成功PostAlbum:{0} {1:d}", test.AlbumName, test.Entered);
return Json(str);//--------对应请求中dataType: "json",表示需要返回json类型
//return String.Format("保存成功PostAlbum:{0} {1:d}", test.AlbumName, test.Entered);//------如果是string,则会报错
}

2、ajax请求中还要一个重要的参数: contentType: "application/json",表示传入参数的格式

 var saveAlbumJson = function () {

            $.ajax(
{
url: "/Home/PostAlbum",
type: "POST",
contentType: "application/json",
dataType:"json",
data: JSON.stringify({ "AlbumName": "shanghai", "Entered": "5/9/2013" }),
success: function (result) {
alert(result);
},
error: function (xhr, status, p3, p4) {
var err = "Error " + " " + status + " " + p3;
if (xhr.responseText && xhr.responseText[] == "{")
err = JSON.parse(xhr.responseText).message;
alert(err);
}
});
}
 [HttpPost]
public ActionResult PostAlbum(test test)
{
string str = String.Format("保存成功PostAlbum:{0} {1:d}", test.AlbumName, test.Entered);//传入test实体
return Json(str);
//return String.Format("保存成功PostAlbum:{0} {1:d}", test.AlbumName, test.Entered);
}
 public class test
{
public string AlbumName { get; set; }
public DateTime Entered { get; set; }
}

3、如果要传入list<实体>,比如List<test>,需要把传入的data做转换

   var saveAlbumJsonList = function () {
$.ajax(
{
url: "/Home/AlbumList",
type: "POST",
contentType: "application/json",
dataType: "json",
data: JSON.stringify({"input":[{ AlbumName: "shanghai", Entered: "5/9/2013" },{...},{....}]}),
success: function (result) {
alert(result);
},
error: function (xhr, status, p3, p4) {
var err = "Error " + " " + status + " " + p3;
if (xhr.responseText && xhr.responseText[] == "{")
err = JSON.parse(xhr.responseText).message;
alert(err);
}
});
}
  public ActionResult PostAlbumList(List<test> input)//input必须要与data中数组中的key匹配
{
if (input != null)
{
string str = String.Format("保存成功PostAlbum:{0} {1:d}", input[].AlbumName, input[].Entered);
return Json(str);
}else
{
return Json("参数获取错误!");
}
//return String.Format("保存成功PostAlbum:{0} {1:d}", test.AlbumName, test.Entered);
}

4、由上面三个例子,很容易想到,传入多个list<实体>的方式

  function postEmployees() {
$.ajax({
type: "POST",
url: "/Home/Employees",
contentType: "application/json",
dataType: "json",
async: false,
data: JSON.stringify({
"Employees": [{ "Id": "", "lastName": "Gates" }, { "Id": "", "lastName": "Bush" }, { "Id": "", "lastName": "Carter" }],
"Employers": [{ "Id": "", "lastName": "Gates" }, { "Id": "", "lastName": "Bush" }, { "Id": "", "lastName": "Carter" }]
}),
success: function (jsonResult) {
alert(jsonResult);
}
});
}
  [HttpPost]
public async Task<ActionResult> Employees(List<Employee> Employees, List<Employee> Employers)
{
return Json("Employees", JsonRequestBehavior.AllowGet);
}
 public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; } public string LastName { get; set; }
}

最新文章

  1. hduoj 1286 找新朋友
  2. zend studio 常用快捷键
  3. Innodb 表空间卸载、迁移、装载
  4. vmware虚拟机挂起后无法再恢复(转)
  5. asp.net 2.0中新增的web.config的默认namespace功能 (转)
  6. sql之事务和并发
  7. C#调用百度云存储接口上传文件
  8. 安卓AVD使用建议
  9. 面向对象程序设计-C++_课时24多态的实现
  10. 记一个CRenderTarget中的BUG及解决办法
  11. 感觉不错的随笔 关于C、C++的
  12. xshell连不上虚拟机
  13. 洛谷.2051.[AHOI2009]中国象棋(DP)
  14. 20170914xlVBA通讯公司分类汇总
  15. C# Enum枚举类型操作扩展类
  16. java+selenium+maven+testng框架(一)安装搭建
  17. 8、redis之事务1-redis命令
  18. Unity3D NGUI 二 NGUI Button怎样接受用户点击并调用函数,具体方法名称是什么
  19. MinGW安装教程——著名C/C++编译器GCC的Windows版本
  20. chrome浏览器使用jqprint插件打印时偶尔空白页问题

热门文章

  1. Ignite集群管理——基于Zookeeper的节点发现
  2. mustache语法
  3. 简化document.createElement(&quot;div&quot;)动态生成层方法
  4. java输出重定向
  5. 20145335郝昊《网络攻防》Exp7 网络欺诈技术防范
  6. [c/c++]指针(3)
  7. Python3基础 pickle.dump和load 对一个对象进行序列化存储及读取
  8. Linux虚拟内存和物理地址的理解【转】
  9. ubuntu16.04下内核模块解析
  10. luogu P2184 贪婪大陆