ASP.Net MVC中jQuery对控制器中的Action传参数的学习

最近想在一个.net mvc的项目中加一个多条件检索查询的页面,之前都是用参数名:值这种方式传参给控制器里的方法,但是多个条件检索感觉这种方法不太方便,就找了一下传参数的一些文章,涨了见识。

1.传参数组类型数据

前端

var _lev = {};

_lev["lev[0].Status"] = "5";  //这里必须从零开始 名字必须一样

_lev["lev[1].Status"] = "6";

$.post("Edit", _lev

, function(json) {

    if (json == "1") { alert(''成功)}

}, "json");



服务器端

接受 Level类型数组

[HttpPost]

        public ActionResult Edit(Level[] lev)

        {

            return Json(lev);

        }

2.传参Dictionary<T,T>类型数据

与上面的一致只是感觉传的是KeyValuePair数组

前端

$("tr[name = 'LeelArea']").each(function(index) {

            _lev["levelOrder[" + index + "].key"] = index;  //这里必须从零开始 名字必须一样

            _lev["levelOrder[" + index + "].value"] = $(this).find("textarea").val();

        });

        if ($(this).valid()) {

            $.post("Edit", _lev

            , function(json) {

                Alert(json);

            }, "json");

        }

 

服务器端

 [HttpPost]

        public ActionResult Edit(Dictionary<int,string> levelOrder) 

3传参自定义类型数据

//js

    //List<User>
          var _lev = {};
          _lev["user[0].name"] = "wudi";
          _lev["user[0].pwd"] = "pwd";
          _lev["user[1].name"] = "wudi";
          _lev["user[1].pwd"] = "pwd";
          $.post("/home/Add", _lev, function(result) {
              if (result <= 0) {
                  alert('保存记录失败!');
              }
              else {
                  c_pr_c.ID = result;
              }
          }, "json");
          //Dictionary<string,user>
          var _lev = {};
          _lev["stock[0].key"] = "MSFT"
          _lev["stock[0].value"] = "Microsoft Corporation"
          _lev["stock[1].key"]= "AAPL"
          _lev["stock[1].value"] = "Apple, Inc."
          $.post("/home/AddDic", _lev, function(result) {
              if (result <= 0) {
                  alert('保存记录失败!');
              }
              else {
                  c_pr_c.ID = result;
              }
          }, "json");

 

    public class user
    {
        public string name { get; set; }
        public string pwd { get; set; }
    }

 
 public ActionResult Add(List<user> user)
        {
            return View();
        }
        public ActionResult AddDic(IDictionary<string, string> stock)
        {
            return View();

        } 


三种传参数方式其实是一种都要_lev中括号里面的变量名必须和Action方法中的参数名和数据的结构一致即可传参。

ASP.Net MVC中应该有一种机制解析前端传过来的参数,自动匹配名字结构都一样的参数,值得注意的是我之前把参数名写的不一致但是还是传过来值,当时我参数是字典型,Debug环境下看见获取的值不是预期的参数而是Controller和Action。。。

ps:原来这种取action的参数列表的机制叫ModelBinding,下面是相关的链接,有大大详解

点击打开链接


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值