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/ как обработать результат