Вопрос по asp.net, c#, javascript – Передать значения C # в Javascript

7

При загрузке страницы я хочу передать значение моей функции 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

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

Ваш Ответ

6   ответов
0

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

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

0

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

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

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

что ваша переменная 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";
        //....
Мой JavaScript прав? Это говорит, что бла не в текущем контексте Nick LaMarca
Я получаю эту ошибку: CS0103: имя «бла»; не существует в текущем контексте Nick LaMarca
Вы должны делать что-то не так. Вы делаете это похоже на мое недавнее редактирование? Я проверил это, и он отлично работает.
@RyanSammut Нет, если переменная не находится в мастер-классе, я так не думаю.
Ahhhhh! У меня был код в веб-форме и JS на главной странице. Работало нормально Спасибо Nick LaMarca
2

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

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

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

param1.value = "myparamvalue"

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

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

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

0

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

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

Похожие вопросы