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 поддерживаемых языков.