2

ServiceStackセルフホステッドアプリと新しい APIについて理解しようとしています。

同じ名前の 2 つのビューを別々のフォルダーに追加すると、起動時にエラーが発生します。これは許されませんか?

Foo\
  Index.cshtml

Bar\
  Index.cshtml

メソッドのデコレータを介して、または戻り値として直接テンプレートを指定する方法はありますか? ビューに DTO の後に名前を付ける規則については知っています。私はより明確にするか、Sinatra/Express に近い慣習に従うことを好みます。

return Render(typeof(Views.Foo.Index), new { Name = "Nelly" });
4

1 に答える 1

1

ServiceStack での Razor サポートに関するドキュメントを保持する ServiceStack のRazor Rockstars Web サイトには、別のテンプレートを選択するためのいくつかのオプションがリストされています。

規則 (リクエストまたはレスポンスの DTO 名など) に従っていない場合は、次のHttpResultような装飾を返すことで、どのビューまたはレイアウト テンプレートを使用するかを動的に指定できます。

return new HttpResult(dto) {
    View = {viewName},
    Template = {layoutName},
};

静的ビューを使用している (つまり、サービスは常に同じビューを使用している) 場合は、[DefaultView]属性で装飾することにより、使用するビューを指定できます。

[DefaultView("Rockstars")]
public object Get(Rockstars request) { 
    ...
    return responseDto; 
}

どちらの場合でも、強い型付けが必要な場合は、 のようなものを使用できますtypeof(RequestDto).Name

ビュー名は一意である必要があります

MVC とは異なり、階層は ServiceStack でのビューの選択に影響しません。また、各ビュー ページ(つまり、フォルダー内のカミソリ ページ/Views) は一意である必要があるため、希望するフラットまたはネストされたフォルダー構造に自由に配置できます。

于 2012-11-07T17:45:10.980 に答える