2

RazorEngineをスタンドアロンのテンプレートエンジンとして使用しようとしています。これは、Razorに渡されるプロパティがわからないことを除いて、うまく機能しているため、変数をリストするオブジェクトを宣言できません。私は現在、辞書を使用してこれを行っており、次のようなことを書くことができます。

@Model.Vars["MyProperty"]

しかし、私は簡単に書くことができるようにしたいと思います:

@MyProperty

これを行う方法はありますか?

よろしくお願いします。

4

1 に答える 1

1

ビューにインテリセンスを提供するために、いくつかのカミソリ構文を使用できます。

@inherits MyNamespace.MoreNamespace.MyCustomRazorModel<MyModelType>

MyCustomRazorModelrequired などのメソッドを実装している限りWriteWriteLiteralすべてが正しく機能し、ビューで次を使用できます。

@MyProperty

次のような定義があると仮定します。

public class MyCustomRazorModel<T>
{
    public string MyProperty { get; set; }
}

テンプレートに必要なモデルで再利用できるように、バッキング Razor 実装はおそらくジェネリックにする必要があります。これは、Razor エンジンが ASP.NET で動作する方法でもあり、プロパティでモデルを公開する汎用モデルを提供し@Modelます。

編集

たとえば、次のクラスを見て、フレームワーク担当者がどのようにそれを行ったかを確認してください。

http://msdn.microsoft.com/en-us/library/gg402107(v=vs.108).aspx

これは、ASP.NET の RazorEngine のバッキング ビューです。スタンドアロンの実装では、このように継承するビューのバッキング タイプを作成します。

于 2012-10-23T17:44:51.403 に答える