簡體   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