ASP.Net VB вызывает функцию JavaScript из кода позади - PullRequest
5 голосов
/ 11 февраля 2012

У меня есть функция, которая отвечает за заполнение отчета SSRS. Пользователь нажимает кнопку, и я выхожу и проверяю, есть ли данные. Если нет данных, я предоставляю сообщение NO DATA. Если есть данные, я вызываю отчет SSRS, который я хотел бы открыть в новом окне. Я думал, что использование функции JavaScript будет лучшим способом для достижения этой цели. Как это сделать или что бы вы порекомендовали? Заранее спасибо!

    <script type="text/javascript">
        function openWindow(url) {
            document.forms[0].target = "_blank";
        }
    </script>

Ответы [ 4 ]

9 голосов
/ 11 февраля 2012

Попробуйте это:

 System.Web.UI.ScriptManager.RegisterClientScriptBlock(Page, GetType(Page), "Script", "openWindow(url);", True)
5 голосов
/ 11 февраля 2012

Пожалуйста, рассмотрите возможность использования метода ClientScriptManager.RegisterClientScriptBlock.Это статический метод, и он должен быть доступен на вашей странице.

Пример использования следующий:

Page.ClientScript.RegisterStartupScript(Me.GetType(), "window-script", "openWindow('someUrl')", True)

Конечно, вы можете поместить любой URL, который вы подготовили, в ваш код позади ...

Надеюсь, это поможет.

3 голосов
/ 11 февраля 2012

Здесь следует иметь в виду: во время работы вашего vb-кода страница в вашем браузере не существует.

Помните, что сеть работает по протоколу http, а протокол http сводится к запросам и ответам . Всегда сначала запрос, а затем ответ. Часто ответом является html, и именно здесь приходит ваш код vb. Единственная цель всего кода и разметки aspx состоит в том, чтобы ваш веб-сервер мог отправить html обратно в браузер. Нет активной связи между браузером и вашим сервером. Пока ваш код vb работает, веб-страница в вашем браузере на самом деле не существует (ваш код занят ее созданием). Пока ваш javascript работает, а ресурсы vb, использованные для его создания на сервере, уже давно переработаны.

0 голосов
/ 11 февраля 2012

Если вы пытаетесь выполнить javascript на странице в зависимости от некоторых результатов логики на стороне сервера, одним из способов достижения этого является использование литеральных элементов управления asp (или других типов элементов управления asp)

Пример:

<asp:Literal ID="literalJavascript" runat="server">
    function openWindow() { ... }

    openWindow();
</asp:Literal>

Затем просто покажите или спрячьте этот литерал в коде вашего сервера на основе вашей другой логики.

...