Доступ к переменным cs внутри JavaScript - PullRequest
3 голосов
/ 03 марта 2011

У меня есть переменная var внутри @ {} на странице cshtml.Я хочу получить доступ к этой переменной внутри JavaScript.Является ли это возможным??Как я могу это сделать ??

@{  
    var array=[""];    
}

Ответы [ 3 ]

6 голосов
/ 03 марта 2011

Вы можете попробовать следующий подход:

@{
    var array = new [] {"foo", "bar"};
}

<script type="text/javascript">
    var array = [@Html.Raw(String.Join(",", array.Select(s => "'" + s + "'")))];

    alert(array[1]);
</script>

Он сериализует массив C # как массив JavaScript в формате ["foo", "bar"].

3 голосов
/ 14 марта 2011

Это прекрасный пример того, когда вы можете рассмотреть возможность использования JSON.Предполагая, что вы разрабатываете с использованием веб-страниц ASP.NET (в отличие от веб-форм / MVC), в каталоге App_Code создайте вспомогательный файл с именем Javascript.cshtml со следующим кодом:

@using System.Web.Script.Serialization;

@helper ToJson(object obj) {
    var ser = new JavaScriptSerializer();
    @Html.Raw(ser.Serialize(obj))
}

Сейчас,если ваша главная страница, вы можете ссылаться на помощника следующим образом: @Javascript.ToJson(myObj).Итак, на вашей странице вы можете сделать что-то вроде этого:

@{
    var myCSharpObj = new { First = "1st", Second = "2nd" };
}
<script language="javascript">
    var myJSObj = @Javascript.ToJson(myCSharpObj);
    alert(myJSObj.Second);
</script>
0 голосов
/ 03 марта 2011

Поскольку переменная на самом деле не существует в браузере, в котором работает ваш javascript, вам придется использовать какой-то тип технологии AJAX.

Простыми старыми веб-сервисами ASMX могут быть ваши лучшие ставки.

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

У меня нет опыта точного форматирования.

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