2012-01-03 20 views
0

私はMVC 3.0(Razorフレームワーク)を使用してプロジェクトに取り組んでいます。私は、ボタンのクリック時にviewdata値を取得するために助けてくださいボタンclick.So上ではなく、document.readyに来て、Javascript Method.ItsでボタンをクリックしてViewdataを使用して表示するために、コントローラから値を取得しようとしています。続きView Data in mvc razor

は私のコード

 [HttpPost] 
      public ActionResult Update() 
      { 
       ViewData["myInfo"] = "my info"; 
       return View(); 
      } 

そして、私のJavaScriptコードです:

<script type="text/javascript"> 
     $(document).ready(function() { 
      $("#btn").click(function() { 

       $.post("/ImportCSV/Update", {}, 
       function() 
       { 
       var g = '@ViewData["myInfo"]'; 

       }); 
       }); 
       }); 
    </script> 

私は、ボタンの上のViewData値を表示したいあなたは、より良い、この中でJSONの結果を返したい

+1

質問のあなたのフレーミングは理解できないです。 JavaScriptコードによって呼び出されるアクションメソッドからデータを渡すことができないと言っておきたいのですか?...関連するjavascriptコードを投稿してください –

答えて

2

をクリックしてください場合。 ViewDataが悪いです。それを使用しないでください。 ViewDataを解釈するこのコントローラーアクションの対応するビューを定義する必要があり、AJAX成功コールバックで取得する最終的なHTMLフラグメントであるため、この場合は機能しません。このコントローラのアクションにAJAX要求を送信し、その後

[HttpPost] 
public ActionResult Update() 
{ 
    return Json(new { myInfo = "my info" }); 
} 
をして:あなたが直接呼び出し元のスクリプトにいくつかのデータを送信することができますJSONを使用して

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#btn").click(function() { 
      var url = @Url.Action("Update", "ImportCSV"); 
      $.post(url, {}, function (result) { 
       var myInfo = result.myInfo; 
       alert(myInfo); 
      }); 
     }); 
    }); 
</script> 
+0

ありがとうございます。JSON以外の方法はありますか?残りの私のfunctinality.plsは何をするかを提案します – user1004864

+0

@ user1004864、この場合はJSONがより適合しているようです。私の答えですでに述べたように、ViewDataを使用することはできますが、対応する 'Update.cshtml'ビューを定義する必要があります。このビューの内側には、コントローラで設定したこのViewDataの内容が表示されます。 AJAXの成功コールバックの内部では、このビューのレンダリングの結果が得られます。 –

+1

大丈夫、助けてくれてありがとう...私はこれに基づいてやるよ – user1004864