2017-08-02 7 views
1

私のビューにはボタンがあり、ボタンをクリックすると、オブジェクトのmvcアクションメソッドにリダイレクトします。アクションメソッドは、ユーザに表示される別のビューを返します。anglejsからMVCにデータを投稿するビューを返すアクションメソッド

これはこれは、上記のボタンのngのクリックで呼び出される関数ですボタン

<button id="btnPreview" type="button" class="btn" ng-click="RedirectToBuyFlow(PreviewOfferId)" ng-model="PreviewOfferId">Preview Offer</button> 

です。

$scope.RedirectToBuyFlow = function (PreviewOfferId) { 
     if (PreviewOfferId != null && PreviewOfferId != undefined && PreviewOfferId != "") { 
      $http.post("/App/MockBuyflow/Qualify", PreviewOfferId); 
     } 
    } 

コントローラ名はMockBuyflowで、アクションメソッドは、問題は、それは決して私のアクションメソッドをヒットしないということである

[HttpPost] 
    public virtual ActionResult Qualify(string OfferId) 
    { 
     //do something 
     return(view); 
    } 

以下の通りです。代わりに$ http.postの私は

window.location.href="/App/MockBuyflow/Qualify?OfferId=3036" 

を使用している場合しかし、それが正常に動作します。しかし、私はポストリクエストを行う必要があるので、私はwindow.location.hrefを使用することはできません。私は投稿で間違っているのですか? 助けてください。

+1

ブラウザのコンソールに$ httpモジュールが割り当てられているかどうかチェックしましたか? –

答えて

0

$ httpメソッドに番号を追加するだけで、要求のHTTP本体にその番号が入ります。

ASP.NET MVCは、何をマップするのか分からず、スキップします。あなたは、サーバーにJSONオブジェクトを送信している

$http.post("/App/MockBuyflow/Qualify", {OfferId: PreviewOfferId}); 

{OfferId: PreviewOfferId}

を書き込むことによって、およびASP.NETを使用すると、上のあなたのOfferId入力にその値をマッピングすることを知っています:

代わりにこれを行ってくださいアクション。


私もASP.NET MVCのそれ以降のバージョンでは、あなたは次のように値がリクエストのボディで見つけることができるように指定するには、[FromBody]属性を使用することができると信じている:

のJavascript :

$http.post("/App/MockBuyflow/Qualify", PreviewOfferId); 

のC#:

[HttpPost] 
public virtual ActionResult Qualify([FromBody]string OfferId) 
{ 
    //do something 
    return(view); 
} 
+1

彼女はURLに追加できません。彼女はそれをはっきりと述べた – Sana

-1

このコードを試すことができます。

$scope.RedirectToBuyFlow = function (PreviewOfferId) { 
    if (PreviewOfferId != null && PreviewOfferId != undefined && PreviewOfferId != "") { 
     $http.post("/App/MockBuyflow/Qualify",{OfferId: PreviewOfferId}); 
    } 
} 
関連する問題