Вызвать функцию Javascript и вернуть значение из ASP .NET - PullRequest
1 голос
/ 07 октября 2008

Допустим, на моей странице есть эта функция:

 function ReturnFoo(bar)
 {
   return bar.toString() + "foo";
 }

Теперь я хотел бы, чтобы это вызывалось из ASP .NET, надеюсь, с помощью ASP .NET AJAX Framework, поскольку я уже использую его в этой кодовой базе (я уже потратил 100 КБ, возможно, с тем же успехом)

Кроме того, я хотел бы получить выходные данные, возвращаемые этой функцией, а затем назначить их переменной, созданной на стороне сервера. И это ограничено ASP .NET 2.0

Ответы [ 8 ]

1 голос
/ 07 октября 2008

Да, это сложный вопрос. Использование MS Ajax поможет вам немного. Вам нужно будет вставить код с сервера, чтобы вызвать эту функцию при загрузке страницы, и присвоить возвращаемое значение скрытому полю, к которому сервер может получить доступ при обратной передаче.

Я должен сказать, что это решение - отстой, но я не знаю другого пути. Надеюсь, у кого-то найдется лучшее решение.

1 голос
/ 08 января 2009

Напишите просто, где вы должны вызвать JavaScript

Response.Write ( "alert ('hello');")

0 голосов
/ 08 января 2009

Я хотел бы проверить JSON.Net (в сочетании с библиотекой [jQuery также бесплатен]). Это решения с открытым исходным кодом, которые значительно облегчают эти проблемы.

0 голосов
/ 24 октября 2008

В первом ответе Мэтт упомянул, что это невозможно (выполнить код на стороне клиента, пока он еще на сервере). И это правда.

Ваш комментарий о Silverlight не очень точный. Silverlight не может вызвать клиентский код с сервера . Silverlight работает на клиенте так же, как JavaScript, так что это вызов клиент-клиент.

Не могли бы вы немного прояснить сценарий ... вот что, я думаю, вы спрашиваете:

private void Page_Load()
{
    string someValue = EXECUTE_JS_ON_CLIENT_AND_GET_RESULT();

    // do some stuff here while still on the server...
}

Если это то, что вы хотите сделать, это невозможно. Находясь на сервере, вы не можете общаться с клиентом.

Это то, что вы имели в виду?

Спасибо, -Timothy

0 голосов
/ 07 октября 2008

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

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

Какова цель этого? Было бы лучше, если бы вы могли оставить это у клиента.

0 голосов
/ 07 октября 2008

Если вы собираетесь повторно использовать некоторые функции как на стороне сервера, так и на стороне клиента, я бы предложил написать эту функцию на стороне сервера (aspx или asmx) и вызывать ее со стороны клиента (JavaScript) с помощью AJAX. Не уверен, что вы ищете это.

0 голосов
/ 07 октября 2008

Я делал это раньше, используя текстовый элемент управления, помеченный как скрытый с автоответчиком при изменении. Затем функция устанавливает текст этого элемента управления, который запускает обратную передачу.

Чтобы вызвать функцию со стороны сервера, просто зарегистрируйте некоторый сценарий запуска, и он будет запускаться при отображении страницы.

0 голосов
/ 07 октября 2008

Я не понимаю, как вы ожидаете, что код на стороне сервера вызовет функцию на стороне клиента ???

AJAX-вызовы со стороны клиента на сторону сервера!

...