#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-запросом, а затем вернуть соответствующий результат.