2016-05-07 28 views
2

ビューからコントローラに変数を送信しようとしているため、別のビューで使用することができます。私はこれを行う方法をいくつかの例を読んだが、私はそれを働かせることはできません。ViewからControllerへの値の受け渡しが正しく行われない

は、ここに私のモデルです:

public class GameResultsViewModel 
{ 
    public int p { get; set; } 
} 

私のコントローラのアクション:

のJavascript機能
[HttpPost] 
public IActionResult EndScreen(GameResultsViewModel results) 
{ 
    return null; 
} 

:私は、単純な入力からこの関数を呼び出してい

function submitResults() { 
    var model = new Object(); 
    model.p = 3; 
    jQuery.ajax({ 
     type: "POST", 
     url: "@Url.Action("EndScreen")", 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     data: JSON.stringify({ results: model }), 
     success: function() { 
      alert("yay");   
     }, 
     failure: function() { 
      alert("nope"); 
     } 
    }); 
} 

<input type="button" value="Click" onclick="submitResults()" /> 

ボタンをクリックすると、アクションに移動しますが、変数は常に0です。逃したことはありますか?

+0

が含まれるであろう

[HttpPost] public IActionResult EndScreen(GameResultsViewModel results, string foo) 

にあなたの行動を変更しました: 'オプション。 –

答えて

0

投稿されたデータからresultsを削除してください。

{ results: model } 

MVCはモデルのプロパティ名にバインドされています。 bindingについて詳しくはこちらをご覧ください。 {P:3}、 `と`のcontentTypeを削除

function submitResults() { 
    var model = { p: 3 }; 
    jQuery.ajax({ 
     type: "POST", 
     url: "@Url.Action("EndScreen")", 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     data: JSON.stringify(model), 
     success: function() { 
      alert("yay");   
     } 
    }); 
} 

あなたは、あなたが必要なのは、 `データであるresults

var model = { p: 3 }; 

data: JSON.stringify({ results: model, foo: "bar" }) 
+0

私はあなたのバージョンに変更しましたが、コントローラのp値はまだ0です。これはJSON.stringify(モデル)の行に問題があるようです。たぶんそれは送信された後、私のビューモデルにjsonを隠していないかもしれません。 データ:{ 結果:JSON.stringify(モデル)、 FOO "FOO" }私はこのような2つの変数を渡す場合、FOO変数が細かい送信さ を、結果変数はありません。 –

+0

最新の質問をあなたの質問に追加してください。 – Jasen

+0

try - data:JSON.stringify({p:3、foo: "bar"}) –

関連する問題