2012-01-03 4 views
0

Я работаю над проектом с использованием MVC 3.0 (Razor framework). Я пытаюсь получить значения от контроллера для просмотра, используя Viewdata на кнопке, щелчок в методе Javascript. Он поступает на document.ready, но не на кнопку Click. Поэтому, пожалуйста, помогите получить значение viewdata при нажатии кнопки.Viewdata 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 значение на кнопку мыши

+1

вашего обрамление вопроса не понятно. Вы хотите сказать, что вы не можете передавать данные из метода действий, который вызывается кодом javascript? ... Также опубликуйте связанный код javascript –

ответ

2

Лучше возвращать результат JSON в этом дело. ViewData плохой. Не используйте его. В вашем случае это не работает, потому что вам нужно определить соответствующее представление этого действия контроллера, которое будет интерпретировать ViewData, и это окончательный фрагмент HTML, который вы получите в обратном вызове AJAX. Использование JSON можно напрямую отправить некоторые данные в вызывающем сценарий:

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

, а затем отправить запрос AJAX к этому действию контроллера:

<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