2017-06-25 12 views
1

次のシナリオとコードスニペットを検討してください。これはASP.NET MVC、Angular 1.x、JS、Jqueryの技術に基づいています。http投稿要求は、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 }) 
}) 

アプリケーションを実行した後、私はフロントエンドで各機能をチェックする(開発者コンソールをグーグル)、そしてそれは私が送信しようとしていますパラメータでヒット。バックエンド/コントローラーサイド、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)。これらの技術のうちの1つは、他の技術が成功しなければ成功することがあります。だから、なぜこのようなことが起こるのか、誰かが私に説明することができますか?何が悪い慣行であるか

+0

コントローラのアクションの詳細を共有してください。コントローラ内 – MKR

+0

@Manoj 処置: '公共IHttpActionResult testExample(testModel testParameter) {リターンOK(testParameter.Test_Code)。 } ' ** testParameter **はModelで、Test_CodeタイプのStringプロパティを持っています。 –

答えて

0

AngularJSによるリクエスト/レスポンスのデフォルトの変換ルールは、AngularjS APIに記述されています。要求構成オブジェクトのデータプロパティは、オブジェクトが含まれている場合

serialize it into JSON format:要求は($httpProvider.defaults.transformRequest and $http.defaults.transformRequest)は次の処理を行いつの機能を持つ配列である変換

:として

ルールが記載されています。

これらのルールに基づいて、お客様の(C)が確実に機能している必要があります。 $scope.exampleTextに有効な値/テキストがあるかどうか確認してください。

+0

まで私は角度で働いています。データを正しく設定したにもかかわらず、常に** Null **データをコントローラに送信するので、パラメータを角度で送信するために$ .param({})を使用しています。フロントエンド。したがって、**(C)**は機能しません。 –

+0

あなたのケースで(** E **)が働いていれば(** C **)動作しなければなりません。構文上、 '$ scope.exampleText'が有効な値を持っているものと違いはありません。なぜJqueryをAngularと混ぜているのですか? Angularは、 '$ http'リクエストでデータのデフォルトの直列化を提供します。代わりに '$。param'を使用すると、 '$ httpParamSerializer'を使うことができます。開発ツールを使用して、Webページの特定のエラーを表示してください。調査の際に役立ちますが、もしあなたがそれらのエラーをここで分かち合うと助けることができたら助けになります。 – MKR

+0

私は意図的に角度とjqueryを混在させませんでしたが、この例では使用しようとしましたが、Googleの開発ツールを使用してエラーをチェックしています!私はエラーを見つけることができなかった!私がVS IDEでデバッグするときに、パラメータがNullであることがわかりました。そして、JqueryとAngularを混ぜると、感情がある場合は正確な理由を言うことができますか、時にはng-modelを使って入力を得ることができませんが、jquery val()を使うと入力値を得ることができます!私は本当に初心者ですので、スクリプトはまったく新鮮で新しくなっていますが、なぜこのような問題が出てくるのでしょうか? –

関連する問題