манипулирование DOM на стороне сервера jQuery - PullRequest
8 голосов
/ 02 марта 2010

Кто-нибудь знает, возможно ли использовать мощь JQuery на стороне сервера .Net?

Например, у меня есть некоторый HTML в виде строки в некотором коде позади. Есть ли способ выполнить JQuery на нем?

Я сейчас занимаюсь этим ...

Предположим, что это строка ...

<input id='AddressSettings_txtFirstName' name='txtFirstName' 
value='#firstNameValue#' size='25' type='text'  class='val_required'/> 

Мой C # делает это

 strHTML = strHTML.Replace("#firstNameValue#", customerInfo.FirstName);

И вот как я связываю свои данные с моим HTML.

Теперь я хотел бы вместо того, чтобы добавить # firstNameValue # в качестве заполнителя и заменить его, я хотел бы каким-то образом выполнить строку JQuery в строке HTML в моем коде C #.

strHTML = strHTML.ExecuteJQuery("$('#AddressSettings_txtFirstName').text('" 
         + customerInfo.FirstName + "')");

Какие у меня есть варианты?

Ответы [ 6 ]

4 голосов
/ 02 марта 2010

Для всех намерений и целей ответ - «нет» (хотя может быть какой-то неясный способ справиться с этим, это не самый оптимальный способ).

Похоже, вы ищете способ манипулировать HTML, который создается на серверной стороне , что является вполне законным желанием, просто подход на стороне сервера с использованием .NET (или другие) технологии радикально отличаются от того, как вы подходите к нему на стороне клиента.

Поскольку содержимое уже отображается на клиенте, способ, которым вы бы оценили его изменение, отличается. На сервере страница состоит из различных частей, которые в конечном итоге отображают HTML-код для клиента, используя данные, к которым клиент не обязательно имеет доступ (а также ресурсы и библиотеки).

Именно по этой причине вы хотите использовать то, что доступно на сервере, чтобы выполнить то, что вы делаете.

Независимо от того, используете ли вы модель WebForms или модель MVC ASP.NET, существуют механизмы, которые позволяют привязывать данные без необходимости записывать тег самостоятельно.

Например, в модели WebForm у вас есть класс TextBox , для которого вы можете установить свойство Text on.

В ASP.NET MVC есть метод расширения TextBox в классе InputExtensions , который позволяет передавать содержимое текстового поля, и метод будет отображать тег для вас. .

1 голос
/ 16 июля 2014

Использование jQuery с jsdom для Node.js. Самый простой способ манипулировать элементами DOM, используя javascript на стороне сервера.

1 голос
/ 12 марта 2014

Может быть то, что вы хотите, это пакет гибкости HTML. Вы не можете выполнить JavaScript, но вы можете сделать некоторые манипуляции с DOM. Попробуйте http://htmlagilitypack.codeplex.com/.

0 голосов
/ 18 января 2011

Эта технология, ItsNat , очень похожа на ваши желания, плохие новости ... основана на Java.

0 голосов
/ 02 марта 2010

Ну, это ответ для Java. Здесь и Здесь Предоставлено каким-то парнем по имени Джон Резиг. (Не уверен, что он знает, о чем говорит, когда дело доходит до JQuery ... wink wink)

А как насчет .Net?

0 голосов
/ 02 марта 2010

DOM является специфической для браузера сущностью. Таким образом, не доступны напрямую, как вы ищете. Тем не менее, вы можете определить, что именно вы хотите манипулировать, и использовать либо .live(), либо вызов своего кода jQuery для добавления поведенческих вещей по мере добавления элементов. Что касается изменения:

<input id='AddressSettings_txtFirstName' name='txtFirstName'  
value='#firstNameValue#' size='25' type='text'  class='val_required'/>  

$('#AddressSettings_txtFirstName').change(function(){
// do stuff here
});

будет срабатывать при изменении, например. РЕДАКТИРОВАТЬ: Еще один вариант - заставить клиента извлекать данные, используя ajax и JSON, но в настоящее время это небольшой сдвиг в вашем методе работы.

...