17

ASP.NET MVCを探索していて、サイトをインタラクティブにするためにjQueryを追加したいと思いました。.Netに移植されたStringTemplateを、htmlを生成してJSONを送信するためのテンプレートエンジンとして使用しました。しかし、そのページを見ると見えませんでした。デバッグ後、$はStringTemplateによってプロパティなどにアクセスするために使用され、jQueryもそれを使用してDOMを操作することに気付きました。ねえ、私は他のテンプレートエンジンを見てきました、そしてそれらのほとんどはドル記号を使用しています:(。

ASP.Net MVCの代替テンプレートエンジンはありますか?MSFTがVisualStudio(2008?)で使用すると発表したため、jQueryを保持したかったのです。

前もって感謝します :)

アップデート

ASP.NET MVCのテンプレートエンジンの包括的なリストとその長所と短所については、ASP.NETMVCビューエンジンの比較に関する質問の回答を参照してください。

アップデート2

$最後に、JQueryを含むJavaScriptコードを別のスクリプトファイルに入れるだけなので、テンプレートファイルの混ざり合いについて心配する必要はありません。

アップデート3

解決する必要があるものを反映するようにタイトルを変更しました。結局のところ、「YのベストX」は非常に主観的な質問です。

4

14 に答える 14

13

もちろん、js ロジックを .js ファイルに移動することもできます。ただし、StringTemplate ビューとインラインで使用する場合は、\$ 構造を使用してエスケープできます。

さらに、構文のエスケープを避けたい場合は、$("selector") 構文の代わりに jQuery("selector") を単純に使用できます。

MVC で StringTemplate を View Engine として使用することに関する良い記事を次に示します。

付属のOpenSource エンジンといくつかのサンプルもあります

また、前述のように、Type Lexer を変更することもできます。($ の代替文字にします)。

于 2009-02-14T20:13:26.300 に答える
10

Sparkを強くお勧めします。私はしばらくjQueryでそれを使用してきましたが、これまでのところ単一の問題に遭遇していません.

于 2008-10-08T16:19:49.610 に答える
6

おそらくjQuery.noConflictがあなたのために働くでしょう

于 2008-10-06T04:32:16.187 に答える
3

StringTemplate(ST)を使い続けたい場合は、STwikiのこの記事を参照してください。Antlr.StringTemplate.Language \ DefaultTemplateLexer.csを編集し、「 $ 」を必要なものに置き換えることで、動作を完全に変更することもできます。

于 2008-10-27T18:44:45.483 に答える
3

私は Django の構文がとても好きなので、NDjango をお勧めします :)

于 2009-07-18T12:23:26.377 に答える
3

mvccontrib プロジェクトを見てください。現時点では、brail、nhaml、nvelocity、xslt の 4 つの異なるビュー エンジンがあります。

http://www.codeplex.com/MVCContrib

于 2008-10-06T19:50:10.560 に答える
1

JsonFx.NETには、使い慣れた ASP.NET スタイルの構文を備えた強力なクライアント側テンプレート エンジンがあります。フレームワーク全体は、jQuery および ASP.NET MVC とうまく連携するように特別に設計されています。実際の UI を構築する方法の例は、 http ://code.google.com/p/jsonfx-examples/ から入手できます。

于 2009-09-20T15:34:25.670 に答える
1

文字列テンプレートのドル記号をエスケープするために $$ または /$ を試しましたか? 特に ST についてはわかりませんが、ほとんどのテンプレート エンジンはそのように動作します。

他のテンプレート エンジンに関しては、プロジェクトで使用したとき、nVelocity がとても気に入りました。

于 2008-10-06T04:44:05.960 に答える
1

ASP.NET MVC プロジェクトに ANTLR StringTemplate を使用しています。ただし、StringTemplate 文法 (template.g) を拡張して、'%' (aspx.template.g) を区切り記号として認識するようにしました。StringTemplate.net バージョンをダウンロードすると、これらのファイルを見つけることができます。対応するファイルを生成しました: AspxTemplateLexer.cs、AspxTemplateParser.cs、AspxTemplateParserTokenTypes.cs、および AspxTemplateParserTokenTypes.txt。

さらに、Visual Studio が認識する拡張子 .aspx および .ascx を認識するように StringTemplateLoader.cs を変更しました。このようにして、私は .st 拡張子に固執せず、クライアントは違いを知りません。

とにかく StringTemplate を再構築した後、私は私が望む動作をしています。StringTemplate について私が気に入っているのは、テンプレートにコードを埋め込むことが許可されていないことです。Spark のように、デフォルトの ASP/MVC テンプレートはコード許容性が高く、テンプレートの移植性が低くなります。

区切り文字として「<%」と「%>」を使用することをお勧めしますが、残念ながら、ANTLR 文法は、他の誰かが変更しない限り、変更するのがやや困難で壊れやすいようです。一方、StringTemplate には優れたサポート コミュニティがあり、分離への優れたアプローチがあります。これが MVC のポイントです。

于 2010-03-18T22:25:07.857 に答える
0

StringTemplateバージョン4を正しく理解していれば、Template(またはTemplateGroup)コンストラクターで独自のエスケープ文字を定義できます。

于 2011-05-11T10:16:43.610 に答える
0

この.NET Template Engineが必要になる場合があります。「$」文字を使用したい場合は、単純に「$$」を使用してください。以下のコードを参照してください。

{%carName = "Audi R8"/}

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

$str$
$$str$$

出力は次のようになります

This is an Audi R8
$str$
于 2010-05-09T23:10:00.407 に答える
0

jsRepeaterを試すことができます。

于 2008-11-02T03:46:46.537 に答える
0

Mustache は、.Net プロジェクト (Web およびバックエンド) 向けの最も簡単で使いやすく、最も軽量なフル機能のテンプレート エンジンであることがわかりました。

.Net 3.5 でうまく動作します (つまり、Razor のような混合型モデルで動作するために動的型と .Net 4.0 は必要ありません)。

私が最も気に入っている部分は、任意の 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"

Mustache の最も優れた点は、まったく同じテンプレートが、純粋な JavaScript またはサポートされている 20 ほどの他の言語でまったく同じように機能することです。

于 2012-11-06T18:47:09.753 に答える