ASP.NET MVC 3 - скажите, чтобы partalview перехватил значения viewdata?

Допустим, у меня есть частичное представление X.ascx как это:

<div id = "updateTargetIdForAjaxForm">
... javascript code which only has function definitions.
... ajax form with buttons inside
    <div id = "stuff"></div>
    <script type = "text/javascript">
       do things to "stuff" div as soon as X.ascx is loaded. 
    </script>
</div>

Теперь я хочу обновить вещи на X.ascx, основываясь на ответе Ajax. Ранее я возвращал PartialView, но встроенный javascript, который делает вещи с div, не хотел бы этого, то есть встроенный javascript просто не будет выполняться при перезагрузке X.ascx.

Так есть ли способ, которым я не могу вернуть PartialView в моем контроллере, а просто обновить значения ViewData и сказать PartialView повторно захватить обновленные значения ViewData? А также вызвать одну или две функции JavaScript на основе ответа от сервера, может быть?

1 ответ

Я вижу два возможных пути:

Исправление кода JavaScript для запуска с динамически загруженным частичным представлением:

Эти двое должны помочь вам.

Другой способ - создать на вашем контроллере действие, которое будет возвращать результат JSON, и из jQuery вы сможете обрабатывать объект JSON и обновлять форму. Ваше действие может выглядеть так:

public JsonResult GetFormValues()
{
    var jsonFormValues = new
    {

        key1 = "abc",
        key2 = "123",
        key3 = "abcdef"

    };
    return Json(jsonFormValues, JsonRequestBehavior.AllowGet);
}

и посмотрите http://api.jquery.com/jQuery.getJSON/ как обработать результат

Другие вопросы по тегам