Передать значения C # в Javascript

При загрузке страницы я хочу передать значение моей функции JavaScript из серверной переменной.

Я не могу заставить его работать, вот что у меня есть:

Asp.Net

protected void Page_Load(object sender, EventArgs e)
{
    string blah="ER432";
}

Javascript

<script type="text/javascript">

    var JavascriptBlah = '<%=blah%>';

    initObject.backg.product_line = JavascriptBlah;

</script>

Добавление этого на страницу

 public string blah { get; set; }


        protected void Page_Load(object sender, EventArgs e)
        {
           blah="ER432";
        }

Я все еще получаю ошибку: CS0103: имя «бла»; не существует в текущем контексте

Также я хотел бы попытаться сделать это без использования полей Hdon

 mlorbetske13 июн. 2012 г., 21:17
Просто чтобы быть уверенным,script тег находится на странице, которая имеет .aspx.cs, содержащийpublic string blah { get; set; } объявил в нем, и страница объявила, что файл .aspx.cs как его код позади право?

Ответы на вопрос(6)

blah на уровне класса.

 14 июн. 2012 г., 16:01
@RDC есть определенное правило, которое говорит это? Я чувствую, что мой ответ решает точную проблему, не давая читателю бесполезную информацию.
 14 июн. 2012 г., 16:19
@ Матфея .. Нет, такого правила не существует, даже я согласен с вами, что ваш ответ решит проблему, поэтому я поблагодарил вас :), но вы любите помогать людям таким же образомwe can make better stack-overflow управляя нашей Q / A, хорошо .. я всегда голосую за комментарии, которые решают проблему или ценны как ответный пост.
 14 июн. 2012 г., 13:40
@ Матфея .. спасибо за вашу помощь, но убедитесь, что когда ответ в одной строке или меньше, то это должен быть комментарий, надеюсь, вы меня поняли!

В этом конкретном случаеblah является локальным дляPage_Load Вы должны будете сделать его членом уровня класса (вероятно, сделать его свойством), чтобы он был представлен таким образом.

что я делал в прошлом, - это то, что веб-формы делают в зависимости от их функциональности - создание скрытого поля для хранения значений, необходимых клиенту. Если вы используете 4.0, вы можете установить режим идентификатора клиента в скрытом поле на статический, что также поможет сохранить чистоту. По сути, добавьте свое значение в скрытое поле, а затем из javascript вы можете получить значение или изменить его тоже (на случай, если вы захотите передать его обратно), так как это всего лишь элемент dom.

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

Вашstring blah должен быть общественной собственностью вашегоPage класс, а не локальная переменная внутриPage_Load, Вам нужно узнать о области видимости.

public class MyPage
{
    public string blah { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        blah = "ER432";
    }
}
 Nick LaMarca13 июн. 2012 г., 21:16
Этот код не работает для меня, пожалуйста, проверьте мой javascript, я получаю сообщение об ошибке "бла" не в текущем контексте
Решение Вопроса

что ваша переменная C # должна быть членом класса для этого. Попробуйте объявить его на уровне класса вместо локальной переменнойPage_Load(), Очевидно, он теряет область видимости после завершения page_load.

public partial class Example : System.Web.UI.Page
{
    protected string blah;

    protected void Page_Load(object sender, EventArgs e)
    {
        blah = "ER432";
        //....
 Nick LaMarca13 июн. 2012 г., 20:52
Я получаю эту ошибку: CS0103: имя «бла»; не существует в текущем контексте
 12 мар. 2013 г., 22:45
@RyanSammut Нет, если переменная не находится в мастер-классе, я так не думаю.
 Nick LaMarca13 июн. 2012 г., 21:09
Мой JavaScript прав? Это говорит, что бла не в текущем контексте
 13 июн. 2012 г., 20:57
Вы должны делать что-то не так. Вы делаете это похоже на мое недавнее редактирование? Я проверил это, и он отлично работает.
 Nick LaMarca13 июн. 2012 г., 21:20
Ahhhhh! У меня был код в веб-форме и JS на главной странице. Работало нормально Спасибо

Вы можете поместить скрытый ввод в вашу HTML-страницу:

<input  type="hidden" runat='server' id="param1" value="" />

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

param1.value = "myparamvalue"

Наконец, ваша функция JavaScript может получить доступ, как показано ниже:

document.getElementById("param1").value
 24 нояб. 2016 г., 01:35
Вам может потребоваться добавить ClientIDMode = static, в противном случае идентификатор украшен некоторыми внутренними префиксами.
 13 июн. 2012 г., 20:40
Это веб-формы, поэтому вы должны включитьrunat="server" на ваш вход, чтобы сделать его доступным из кода сервера

Ваш ответ на вопрос