Просмотр данных в бритве mvc

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

Ниже приведен мой код

     [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 при нажатии кнопки


person user1004864    schedule 03.01.2012    source источник
comment
непонятна ваша постановка вопроса. Вы хотите сказать, что не можете передать данные из метода действия, который вызывается кодом javascript??... Также опубликуйте соответствующий код javascript   -  person Pankaj Upadhyay    schedule 03.01.2012


Ответы (1)


В этом случае вам лучше вернуть результат 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>
person Darin Dimitrov    schedule 03.01.2012
comment
Большое спасибо, но есть ли способ, кроме JSON, потому что я уже возвращаю строку, связанную с остальной частью моей функции. Пожалуйста, предложите, что делать - person user1004864; 03.01.2012
comment
@ user1004864, в этом случае JSON кажется более адаптированным. Как я уже говорил в своем ответе, вы все еще можете использовать ViewData, но вам нужно будет определить соответствующее представление Update.cshtml. Именно внутри этого представления вы получите содержимое этого ViewData, которое вы установили в контроллере. И внутри обратного вызова успеха AJAX вы получите результат рендеринга этого представления. - person Darin Dimitrov; 03.01.2012