JQuery $находится в конфликте с StringTemplate.Net в ASP.Net MVC

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

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

Спасибо в Advance:)

Обновление

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

Обновление 2

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

Обновление 3

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

Ответ 1

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

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

Здесь хорошая статья о с использованием StringTemplate в качестве механизма просмотра в MVC.

Также есть сопровождающий движок OpenSource вместе с некоторыми образцами.

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

Ответ 2

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

Ответ 3

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

jQuery(

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

$(

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

Ответ 4

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

Ответ 5

Посмотрите проект mvccontrib. В настоящий момент у них есть 4 разных механизма просмотра, которые являются brail, nhaml, nvelocity и xslt.

http://www.codeplex.com/MVCContrib

Ответ 6

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

Я использую 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.

Ответ 11

Вы можете попробовать jsRepeater.

Ответ 12

Вам может понадобиться .NET Template Engine. Если вы хотите использовать символ "$", просто используйте "$$". См. Код ниже:

{%carName = "Audi R8"/}

{%string str = "This is an $carName$"/}

$str$
$$str$$

вывод будет

This is an Audi R8
$str$

Ответ 13

Если я правильно понимаю версию StringTemplate версии 4, вы можете определить свой собственный escape char в конструкторе Template (или TemplateGroup).

Ответ 14

Настроено Усы, чтобы быть самым безумным, самым простым в использовании, самым легким полнофункциональным шаблоном для проектов .Net(веб и бэкэнд)

Хорошо работает с .Net 3.5 (что не требует динамического типа и .Net 4.0 для работы с смешанными типами моделей, такими как Razor).

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

var child = new {
    nested = "nested value"
};
var parent = new {
    SomeValue = "asdfadsf"
    , down = child
    , number = 123
};

var template = @"This is {{#down}}{{nested}}{{/down}}. Yeah to the power of {{number}}";

string output = Nustache.Core.Render.StringToString(template,parent);
// output:
// "This is nested value. Yeah to the power of 123"

Что самое красивое в отношении Усы - тот же самый точный шаблон работает точно так же в чистом JavaScript или любом другом из 20 поддерживаемых языков.