Вызов функции javascript при возврате любого результата в действии контроллера

#javascript #asp.net-mvc #bpopup

#javascript #asp.net-mvc #bpopup

Вопрос:

Я застрял со следующим сценарием:

На мой взгляд, есть список элементов. В зависимости от того, что представляет элемент, нажатие на элемент приведет вас к соответствующему представлению и отображению этих результатов. Теперь отображение результатов в представлении не является проблемой; это работает нормально. Однако некоторые элементы должны отображаться во всплывающем окне, а не в представлении. Я использую частичное представление вместе с bPopup и функцией javascript, такой как ShowListDialog (данные), для отображения диалогового окна и привязки данных. Как мне вызвать функцию javascript при возврате любого результата, который должен быть (я подозреваю JavaScriptResult) в действии.

Я думаю, что на данный момент мое действие должно выглядеть следующим образом:

общедоступный ActionResult ResponseItem (ссылка int) { ResponseBase response = repository.RetrieveResponse(ссылка);

 if (response.ShouldShowInView)
{
    return View(response.RedirectUrl, response.Data);
}
else
{
    return JavaScript("ShowListDialog("   response.Data.JsonString   ");");
}
  

}

Я просматривал примеры возврата результата JavaScript, и я даже не могу заставить это работать. Если я скажу что-то вроде:

верните JavaScript(«alert(‘Привет’);»);

затем в IE он спрашивает меня, хочу ли я открыть файл javascript; а в Chrome и Firefox он просто отображает предупреждение (‘Hello’); на странице.

Заранее спасибо за помощь 🙂 D

Комментарии:

1. Вы хотите сгенерировать некоторый javascript и выполнить его? Вы можете просто сгенерировать html-страницу, содержащую тег <script></script>, и поместить в нее свой скрипт.

2. Нет, я хочу вызвать существующую функцию javascript с именем ShowListDialog, которая отобразит всплывающее диалоговое окно поверх текущей страницы (если выбранный элемент списка выдает тип ответа, который должен отображаться во всплывающем окне). Отображение элементов, связанных с представлением, не является проблемой.

3. Я понимаю, я имел в виду, что вы можете сгенерировать html-ответ, включая тег script, поместить в него свои скрипты ShowListDialog (…). Затем будут вызваны скрипты.

4. Это больше похоже на то, что вы должны вернуть некоторый код состояния вашему клиенту и вызвать ShowListDialog из javascript на стороне клиента на основе кода состояния.

Ответ №1:

при циклическом просмотре элементов вы можете решить, какой из них всплывающий, а какой нет, а затем ссылаться на 2 отдельных действия на основе этого?

JavaScriptResult работает только в том случае, если вы вызываете действие через ajax, так что, возможно, именно поэтому оно не работает (в случае, если это не так). вы могли бы, вероятно, использовать это, чтобы сообщить в действии, является ли это ajax-запросом, а затем вернуть соответствующий результат.