2012-12-05 18 views
5

共有_Layout.cshtmlページがあり、そのページを呼び出すサービスにアクセスする必要があります。要求dtoまたはモデルにアクセスする必要があります。呼び出しサービスのタイプ、モデルタイプ、または要求タイプに応じて、さまざまなオプションをレンダリングできます。 _Layoutページで上記のいずれにもアクセスできないようです。 私はSS-Razorには新しく、おそらくもっと大きな画像は見ていないのですが、ここでモデルにアクセスしようとしています。_Layoutページからモデル/要求データにアクセスできない

_Layout.cshtmlでは、私はViewBagとセッション情報にアクセスできるように以下を定義しました。

@using ServiceStack.Razor 
@inherits ViewPage<ResponseBase> 

私も

@inherits ViewPage 

これは私_layoutにおける基本的なページのインフラへのアクセス権を与える単なるビューページを試してみました。 しかし、レイアウトのモデルは、ResponseBaseクラスから継承するすべてのレスポンスを一時的に変更したものの、上記のコードで見られるように、すべてのモデルが少なくともResponseBaseを持つページを継承しています。

次に、リクエストDTOをリクエストの項目に挿入するグローバルフィルタを設定します。これは、開始となり、レイアウト中にいくつかの情報にアクセスできることがわかります。 は、だから、私はブレークポイントをフィルタにヒットされてとreqestDtoはので、私はこの作品が、少なくとも働いている知っているコレクションにaddeddされて見ることができる見ることができます

this.RequestFilters.Add((httpReq, httpResp, requestDto) => 
{ 
    if(httpReq != null && httpReq.Items != null) 
        httpReq.Items["RequestDto"] = requestDto; 
}); 

、アプリのホストに次を追加しました。 以下のコードを使用して_LayoutのrequestDtoにアクセスしようとすると、Request.ItemsにはRequestDtoが決して含まれません。

@{ 
    RequestBase myRequest = null; 
    if(base.Request != null) 
     if(base.Request.Items.ContainsKey("RequestDto")) 
      myRequest = (RequestBase)base.Request.Items["RequestDto"]; 
} 

私の人生のために私は、私はactiallyそこに何が起こっているか見ることができますレイザービューページにしばらくを設定するためのブレークポイントを得ることができないので、このすべてが多少試行錯誤です。 私はこの段階でRazorRockStarsのサンプルを何度も見てきましたが、そこで何をしようとしているのかわかりません。

誰もこの問題に取り組むための指針、例、アドバイスはありません。この段階で_Layoutのさまざまなオプションをレンダリングするための全く別のアプローチを指摘してください。私はあまり髪が残っておらず、何かを試してみるつもりです。

+0

自己ホスティング、IISでのホスティング、または従来のASP MVCプロジェクトでServiceStackを使用していますか(両方を混在)ですか? –

+0

いいえ私は自己ホスティングではない、私はWebホストにいる。 – Bigtoe

+0

ここに同じ問題があります。私は、 'ServiceStack.Razor.Compilation.RazorDynamicObject'型を 'XYZ.IMyModel'例外に暗黙的に変換できません。 –

答えて

1

ServiceStackのv3.9.33をお試しください。 mythzは、この問題に関連するかもしれないかみそりのサポートでいくつかの問題を修正しました。

+0

NuGetの最新版でも同様の問題が発生しています。他のアイデア? – JesseP

関連する問題