2017-08-02 250 views
1

我想提出一個partialview時的下拉列表的值更改。 與我的代碼,它的工作原理,但是當我想用post方法發送數據到控制器時,我總是有空值(控制器參數始終爲空數據)。我看到了很多不同的方式來做到這一點,但沒有人爲我工作。ASP.NET MVC核心AJAX

我的觀點Ajax代碼:

@section scripts { 
<script type="text/javascript"> 

    $("#ProjecteId").on("change", function() { 
     var request = JSON.stringify({ 
      'ProjecteId': $('#ProjecteId').val() 
     }); 
     console.log(request); 
     $.ajax({ 
      type: 'Post', 
      url: '/Consultas/MostrarTipusPersona', 
      dataType: 'html', 
      contentType: 'application/json', 
      data: request, 
      success: function (data) { 

       console.log('sample', data); 
      }, 
      error: function() { 
      } 
     }); 
    }); 
</script> 

}

我的控制器:

  [HttpPost] 
    public IActionResult MostrarTipusPersona(ProjecteModel pm) 
    { 
     return PartialView("_Ciutada", new Ciutada()); 
    } 
+0

__Something我可以發現:__ 在你的Ajax對象的類型字段: _type:「後」 _ 還請澄清你在哪裏得到空?它是返回Ajax還是發佈的數據?一些更多的信息,我可以幫助你。 – Terrance00

+0

嗨@ Terrance00,我收到控制器中的空數據,參數ProjecteId始終爲空。我修改了我的帖子來澄清這一點,非常感謝! – NorbertFD

回答

1

首先驗證客戶端數據:

由於沒有HTML被提供請記錄你的json:

var request = ... 
console.log(request); 
$.ajax(...) 

確保你的服務器端預計將正確的數據

由於你的代碼,服務器端願與串部件的對象。所以讓我們給它。我們將創建一個對象,表示要發送到服務器的JSON對象:

public class ProjectedModel 
{ 
    public string ProjecteId {get;set;} 
} 

現在修改你的方法,以期望這種模式:

public IActionResult MostrarTipusPersona(ProjectedModel model) 

PS:它看起來像你的客戶端AJAX方法期待json。我建議從ajax方法中刪除dataType: "json",因爲數據類型將是partialhtml視圖。 (只是接受它作爲一個字符串 - 或擴大你的問題,所以我們可以肯定的。)

編輯:

傳遞一個字符串值似乎是問題,那麼,有兩件事嘗試:

(1)中的數據轉換爲字符串toString()方法

var request = JSON.stringify(
     {'ProjecteId': ($('#ProjecteId').val()).toString() 
    }); 

(2)我牛逼內嵌像這樣:

var request = JSON.stringify({ 
    'ProjecteId': "'" + $('#ProjecteId').val() + "'" 
}); 

當然,您的另一種選擇是簡單地發送一個整數。

+0

首先,非常感謝幫助我:) 請求有這些數據:{「ProjecteId」:「2」},我認爲這是正確的。 模型ProjecteModel(沒有[FromBody])不爲null,但屬性ProjecteId有一個空值:( 正確的dataType是html,它的工作原理(數據類型:「html」),我改變了它只是爲了嘗試其他 如果我使用[FromBody] ProjecteModel爲null .. – NorbertFD

0

我已經解決,只是把contetType: '應用/的X WWW的形式,進行了urlencoded'。

感謝您的幫助!

+0

我以爲你想專門發送json。無論如何,編輯應該現在工作。 – Terrance00

+0

所以對不起@ Terrance00我的錯誤.. – NorbertFD

+0

那麼,時間將會到來當你想發送json時 - 上面的答案可以作爲你的指導。 – Terrance00