Как передать данные из c # в jquery / javascript?

0

У меня есть функция, которую я хотел бы запускать при загрузке страницы, поэтому либо в document.ready, либо в pageLoad.

Используя jquery, я вызову функцию, используя ее имя класса

В документе document.ready

var span = $('.linkify');
span.html(textToLinks(span.html()));

В другом месте

function textToLinks(text) {

    var exp = /(my text)/ig;
    return text.replace(exp, "<a class='link' href='http://www.bbc.co.uk' target='_blank' >$1</a>");

}

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

У меня есть список терминов в моем приложении С#, а также соответствующий URL-адрес. Я собираюсь передать эти данные в виде строки и раскалываться, однако у моего знания javascript много дыр.

Поэтому, я полагаю, у меня есть 3 вопроса:

  1. Как я могу получить свою строку в функции при загрузке страницы?
  2. Является ли строка правильным типом или я могу передать какой-либо другой объект словаря?
  3. Как выполнить итерацию каждого из терминов, переданных эффективно?

Заранее спасибо.

Теги:

5 ответов

1

Вы можете сделать так:

Объявите публичный член в свой класс С# по коду

public string mystring;

Инициировать его в Init или Load Event И написать, что на вашей js-функции

var exp = '<%=mystring %>';

Он должен работать для строки. Для Dictionnary вы можете попытаться сделать Ajax

1

Другой возможный способ сделать это - написать функцию javascript при загрузке страницы в код С#. Затем он будет добавлен на страницу при ее рендеринге и может быть выполнен с помощью jQuery на document.ready(); или любой другой функции/события.

Пример кода:

    string FunctionStr = "<script type=\"text\javascript\">function textToLinks(text) {" +
        "var exp = /(my text)/ig;" +
        "return text.replace(exp, \"<a class='link' href='http://www.bbc.co.uk' target='_blank' >$1</a>\");" +
        "}</script>";

    this.ClientScript.RegisterClientScriptBlock(this.GetType(), "Some JS Function", FunctionStr);

Ответы от Ананда и Дэниела могут лучше соответствовать вашему желаемому подходу, но это третий вариант, если вы этого хотите.

1

Вы можете использовать JQuery Ajax для получения данных на стороне сервера.

Но это потребует от вас установки службы, которая будет выставлена. Вы можете сделать это в кратчайшие сроки без настройки службы.

Но это потребует грязной логики (ее короткое сокращение :))

Вы можете создать свойство на своей странице, которое предоставляет данные JSON Data как строку. Вы можете прочитать данные JSON в своем javascript, следуя

var data =<% GetData() %>

Вы можете определить ToJson на объекте, чтобы преобразовать объект в JSON String

    public static string ToJSON(this object obj)
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer(new SimpleTypeResolver());
        return serializer.Serialize(obj);
    }

public string GetData()
{
    return (new {SomeData}).ToJson();
}

Примечание. SomeData - это класс, содержащий ваши данные (т.е. Массив URL-адресов) или то, что вы когда-либо представляли.

Затем перебираем данные для создания динамического html

1

@Anand правильно говорит, что вы можете использовать jQuery Ajax для извлечения данных на стороне сервера.

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

Вы можете использовать класс.net JavascriptSerializer для сериализации данных в формате JSON. JSON - очень хороший инструмент для ознакомления, если вы еще не знакомы с ним.

JavascriptSerializer помещает ваш JSON в строку, которую вы затем можете вставить в скрытый ввод и прочитать с помощью кода Javascript. Это имеет то преимущество, что нет необходимости в втором HTTP-запросе, как в случае с jQuery Ajax.

0

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

Я не знаю, используете ли вы MVC или WebForms, но идея в основном такая же:

Например (используя JSON.NET для сериализации):

<script id="some-data" type="application/json">
    <%= JsonConvert.SerializeObject(someDotNetObject) %>
</script>

<script type="text/javascript">
    var _someJsObject = JSON.parse(document.getElementById("some-data").innerHTML);
</script>

Теперь _someJsObject - это объект javascript, представляющий данные, с которых вы начали, и вы можете делать с ним все, что хотите, например, перебирать массив и т.д.

Замечание - если вы нацеливаетесь на IE7, вам нужно использовать что-то вроде json2.js, чтобы получить JSON-синтаксический анализ.

  • 0
    Я использую вебформы
  • 0
    Но как мне интегрировать это? Извиняюсь, но мои знания ajax / javascript / jquery довольно слабые.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню