2017-06-25 94 views
1

請考慮以下方案和代碼片段。這個問題基於ASP.NET MVC,Angular 1.x,JS,Jquery技術。http post請求在ASP NET MVC中將參數轉換爲'Null'

考慮有一個文本框,具有屬性id =「textExample」ng-model =「exampleText」。根據MVC架構,我將從視圖中將文本框輸入發送到控制器。所以對於這個任務我使用了下面的代碼片段。

(A)

$http ({ 
// Rest is avoided for now // 
data : $.param({'Test_Code' : $scope.exampleText}) 
}).then() --- 

(B)

$http({ 
data : "sendingData" 
}).then ({}) 

(C)

$http ({ 
data : ({'Test_Code' : $scope.exampleText}) 
}) 

(d)

$http({ 
data : $("#textExample").val() 
}) 

(E)

var testExample = $scope.exampleText ; // $scope.exampleText == 'XYZ' 

$http ({ 
data : ({'Test_Code' : testExample }) 
}) 

運行的應用程序後,我檢查在前端的每個功能(Google開發者控制檯),然後點擊與我試圖發送參數。在後端/控制器端ASP NET MVC控制器,POST請求接收結果

(A) --> Value is Null 
(B) --> Value is "sendingData" 
(C) --> Value is Null 
(D) --> Value is Null 
(E) --> Value is 'XYZ' 

主要的問題,我發現(我看到)的是,即使每5個功能獲取參數,它改變了值發送到控制器時。但硬編碼參數沒有改變(B)。有時候其中一種上述技術可以成功,如果其他技術不成功的話。那麼,有人可以解釋爲什麼會發生這種事情嗎?或者有什麼不好的做法使用

+0

請分享控制者的行動的詳細。 – MKR

+0

@Manoj 動作在控制器: '公共IHttpActionResult testExample(testModel testParameter) { 返回OK(testParameter.Test_Code); }' ** testParameter **是一個Model,它有一個屬性Test_Code type String。 –

回答

0

通過AngularJS請求/響應的默認轉換規則在AngularjS API中描述。已經描述

規則爲:

請求轉換($httpProvider.defaults.transformRequest and $http.defaults.transformRequest)是與一個函數,它以下的數組:

如果請求配置對象的數據屬性包含一個對象,serialize it into JSON format

根據這些規則,您的(C)肯定有效。請問您是否可以在$scope.exampleText中查看有效的價值/文字?

+0

據我在角度工作我使用$ .param({})角度發送參數,因爲沒有使用它總是發送**空**數據到控制器,雖然數據已被正確設置在前端。所以**(C)**不起作用。 –

+0

如果(** E **)在你的情況下工作,那麼(** C **)必須工作。從句法上來說,提供'$ scope.exampleText'的文件沒有區別。你爲什麼混合使用Jquery和Angular? Angular爲'$ http'請求中的數據提供默認序列化。相反,使用'$ .param'你可以使用'$ httpParamSerializer'。我會建議請使用開發人員工具查看網頁上的特定錯誤。它會幫助你進行調查,如果我們能在這裏分享這些錯誤,我們是否能提供幫助。 – MKR

+0

我故意沒有混合角和jQuery,但我嘗試在這個例子中使用,我使用谷歌開發工具來檢查錯誤!我找不到錯誤!正當我在VS IDE上進行調試時,我可以發現參數是空的!和混合Jquery和Angular,如果你有一個意義,你能說我一個確切的原因,有時通過使用ng-model無法獲得輸入,但使用jquery val()可以獲得輸入值!我真是新手,所以我不知道爲什麼這樣的問題會通過腳本來完成一個新鮮事! –