jquery не получает значение переменной из С# var

jquery отлично работает, когда я использую фрагменты в .aspx, включая этот

$(function() {
    var availableTags = [
        "ActionScript",
        "AppleScript",
        "Asp",
        "BASIC",
        "C",
        "C++"
    ];
    $( "#tags" ).autocomplete({
        source: availableTags
    });
});
</script>

затем я написал следующий код в своем файле .cs

 protected void Page_Load(object sender, EventArgs e)
{

    DataClassesDataContext db = new DataClassesDataContext();
    var val = from q in db.ques_tbls select q.qTitle;
    db.SubmitChanges();
}

после добавления этого я изменил одну строку в скрипте в .aspx вот так

 var availableTags = <%=val%>;

Я закончил с этой ошибкой. . Сообщение об ошибке компилятора: CS0103: имя «val» не существует в текущем контексте

Ошибка источника:

Line 12:       <script type="text/javascript">
Line 13:           $(function () {
Line 14:               var availableTags = <%=val %>;
Line 15:               function split(val) {
Line 16:                   return val.split(/,\s*/);

person user1074474    schedule 25.01.2012    source источник
comment
моя цель - назначить availableTags = с переменными CS   -  person user1074474    schedule 25.01.2012


Ответы (2)


Вы объявили val локальной переменной для своего метода Page_Load.

   var val = from q in db.ques_tbls select q.qTitle; 

Он должен существовать на уровне класса, чтобы страница aspx могла его использовать. Создайте элемент или свойство для хранения значения.

person David    schedule 25.01.2012
comment
И его область действия должна быть защищена или общедоступна, поскольку страница ASPX наследуется от страницы кода программной части. - person Joe Alfano; 25.01.2012
comment
также не забудьте добавить разделители вокруг переменной javascript. В настоящее время они отсутствуют. - person Ralph Willgoss; 25.01.2012

Просто создайте функцию в коде C#, которая возвращает заголовок.

protected string returnTitle() {
   DataClassesDataContext db = new DataClassesDataContext();
   var val = from q in db.ques_tbls select q.qTitle;
   db.SubmitChanges();
   return val.ToString();
}

и ЖС..

<script>
    var availableTags = "<%= returnTitle() %>";
    console.log(availableTags);
</script>

Это вернет availableTags в виде строки, но вы можете настроить его так, чтобы он возвращал массив, если это то, что вам нужно.

person Jamsi    schedule 25.01.2012
comment
Спасибо Джамси, ваш ответ также очень полезен - person user1074474; 25.01.2012