$ JQuery конфликтует с $ StringTemplate.Net в ASP.Net MVC - PullRequest
17 голосов
/ 06 октября 2008

Я изучаю ASP.NET MVC и хочу добавить jQuery, чтобы сделать сайт интерактивным. Я использовал StringTemplate, портированный на .Net, в качестве механизма шаблонов для генерации html и отправки JSON. Однако, когда я просматриваю страницу, я не мог ее видеть. После отладки я понял, что $ используется StringTemplate для доступа к свойству и т. Д., И jQuery использует его также для манипулирования DOM. Ну и дела, я смотрел на других шаблонизаторов, и большинство из них использует знак доллара: (.

Какой-нибудь альтернативный шаблонизатор для ASP.Net MVC? Я хотел сохранить jQuery, потому что MSFT объявил, что он будет использоваться в Visual Studio (2008?)

Заранее спасибо:)

Обновление

Пожалуйста, перейдите к ответ в Сравнение ASP.NET MVC View Engine вопрос для полного списка механизма шаблонов для ASP.NET MVC, и их плюсы и минусы

Обновление 2

В конце я просто помещу код JavaScript, включая JQuery, в отдельный файл сценария, поэтому я не буду беспокоиться о смешивании $ в файле шаблона.

Обновление 3

Изменено название, чтобы отразить то, что мне нужно решить. Ведь «Лучший X в Y» - очень субъективный вопрос.

Ответы [ 14 ]

13 голосов
/ 14 февраля 2009

Конечно, вы можете переместить вашу логику js в файл .js. Но если вы хотите, чтобы он был встроен в ваши представления StringTemplate, вы можете избежать его, используя конструкцию \ $.

Кроме того, вы можете просто использовать конструкцию jQuery («селектор») вместо $ («селектор»), если хотите избежать синтаксиса экранирования.

Вот хорошая статья о , использующем StringTemplate в качестве движка просмотра в MVC .

Также имеется движок OpenSource вместе с некоторыми примерами .

Также, как уже упоминалось выше, вы можете модифицировать свой Type Lexer. (сделать его альтернативным символом $).

10 голосов
/ 08 октября 2008

Я очень рекомендую Spark . Я уже некоторое время использую его с jQuery и пока не сталкивался ни с одной проблемой.

7 голосов
/ 22 мая 2009

JQuery может быть устранен с помощью ключевого слова jQuery, например:

jQuery(

вместо этого:

$(

Я бы посчитал это лучшей практикой. Это исключает любую возможность столкновения с другой библиотекой и делает код более читабельным.

6 голосов
/ 06 октября 2008

Возможно jQuery.noConflict будет работать для вас

3 голосов
/ 18 июля 2009

Мне очень нравится синтаксис в Django, поэтому я рекомендую NDjango:)

3 голосов
/ 27 октября 2008

Если вы хотите использовать StringTemplate (ST) , см. Эту статью из вики ST. Вы также можете полностью изменить поведение, отредактировав Antlr.StringTemplate.Language \ DefaultTemplateLexer.cs и заменив " $ " на то, что вы хотите.

3 голосов
/ 06 октября 2008

Посмотрите на проект mvccontrib. На данный момент у них есть 4 различных движка: Brail, Nhaml, Nvelocity и XSLT.

http://www.codeplex.com/MVCContrib

1 голос
/ 19 марта 2010

Я использовал ANTLR StringTemplate для проекта ASP.NET MVC. Однако я расширил грамматику StringTemplate (template.g) для распознавания «%» (aspx.template.g) в качестве разделителей. Вы можете найти эти файлы, если загрузите версию StringTemplate.net. Я сгенерировал соответствующие файлы: AspxTemplateLexer.cs, AspxTemplateParser.cs, AspxTemplateParserTokenTypes.cs и AspxTemplateParserTokenTypes.txt.

Кроме того, я изменил StringTemplateLoader.cs для распознавания расширений .aspx и .ascx, которые распознает Visual Studio. Таким образом, я не застреваю с расширением .st, и клиенты не знают разницы.

В любом случае, после перестроения StringTemplate у меня есть поведение, которое я хочу. Что мне нравится в StringTemplate, так это то, что он НЕ позволяет внедрить ЛЮБОЙ код в шаблон. Похоже, что Spark, как шаблон ASP / MVC по умолчанию, разрешает код, что делает шаблоны менее переносимыми.

Я бы предпочел использовать "<%" и "%>" в качестве разделителей, но, к сожалению, грамматику ANTLR кажется несколько сложной и хрупкой для изменения, если кто-то другой не сделал этого. С другой стороны, у StringTemplate есть отличное сообщество поддержки и отличный подход к разделению - в этом суть MVC.

1 голос
/ 20 сентября 2009

JsonFx.NET имеет мощный клиентский шаблонизатор со знакомым синтаксисом в стиле ASP.NET. Вся структура специально разработана для работы с jQuery и ASP.NET MVC. Вы можете получить примеры того, как создать реальный пользовательский интерфейс из: http://code.google.com/p/jsonfx-examples/

1 голос
/ 06 октября 2008

Вы пробовали $$ или / $, чтобы избежать знака доллара в шаблоне строки? Я не уверен насчет ST конкретно, но именно так работает большинство шаблонизаторов.

Что касается других шаблонизаторов, я действительно любил nVelocity, когда использовал его в проекте.

...