繁体   English   中英

Ajax查询字符串未发布到ASP.NET控制器

[英]Ajax query string not being posted to ASP.NET controller

我有这个Ajax函数:

UpdateFIConfig: function ($appForm) {

    var valid = $appForm.valid();
    //if not valid the validate plugin will take care of the errors
    if (valid) {

        $appForm.serialize();
        $.ajax({
            url: '/IdentifiConfig/DefaultConfiguration/UpdateFIConfig',
            data: $appForm,
            dataType: 'application/json',
            cache: false,
            type: 'POST',
            success: function (data) {
                if (data.Error) {
                    cc.jqUtils.openDialog(data.ErrorDescription, 'Error', 'OK', null, null, null);
                } else {
                    window.location.href = '/IdentifiConfig/DefaultConfiguration';
                }
            }
        });

    }
},

将从我的视图发送的数据序列化为查询字符串。 我知道数据是正确序列化的,因为我用console.log($appForm)查看了字符串,这是正确的。

但是,我的控制器永远不会收到查询字符串。 我删除了很多代码,但这基本上就是控制器函数的样子:

 [HttpPost]
 public ActionResult UpdateFIConfig(string query)
 {
     NameValueCollection nvc = HttpUtility.ParseQueryString(query);

     System.Diagnostics.Debug.WriteLine(nvc);
 }

我在行上收到一个空指针,试图解析查询字符串,我不知道为什么。 有帮助吗?

我在我的项目中有同样的事情ajax唯一不同的是我不使用dataType而是contentType:“application / json; charset = utf-8”

data: "{'query' : '" + $appForm + "'}"

这一点:

$appForm.serialize();

返回您从未使用过的string serialize实际上不会修改表单。 你应该将它分配给一个变量并改为传递它:

var data = $appForm.serialize();

$.ajax({
    url: '/IdentifiConfig/DefaultConfiguration/UpdateFIConfig',
    data: data,
    /* etc */
});

可能有更好的方法,但我通过接受带有字符串属性的Object而不仅仅是字符串来解决这个烦恼。 所以做以下事情:

 [HttpPost]
 public ActionResult UpdateFIConfig(MyTypeWithQry query)
 { ...

    $.ajax({ url: '/IdentifiConfig/DefaultConfiguration/UpdateFIConfig',
             data: { 'query' : $appForm },
             dataType: 'application/json',
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM