2017-02-09 20 views
2

私は、従来のWinformsアプリケーションと新しいhtml/css/javascript Webの両方にサービスを提供するServiceStackプロジェクトを1年経っています。私は今、これらのアプリのいくつかにあらかじめフォーマットされたビューを提供する必要があります(特にXamarinモバイルプラットフォームを追加した場合)、Servicestack.Razorのように見えます。既存の機能を変更せずに、成熟した既存のServicestackプロジェクトにRazorを追加する

私は、新しいプロジェクトでやり直すのではなく、既存のプロジェクトにRazorを追加する最良の方法がわかりません。必要なビューフォルダ、参照、web.config要素を自分で追加できますか?

また、サービスを利用できる(上記のアプリケーションから呼び出すことができます)が、そのサービスのビューを追加するための標準的なURL規約は何ですか?これは新しいルートですか?

答えて

2

あなたが必要なconfig sections to your Web.configを追加することで、既存のServiceStack Webアプリケーションにカミソリを追加することができます。

<configuration> 
    <configSections> 
     <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false"/> 
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false"/> 
     </sectionGroup> 
    </configSections> 

    <appSettings> 
     <add key="webPages:Enabled" value="false" /> 
    </appSettings> 

    <system.web.webPages.razor> 
     <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <pages pageBaseType="ServiceStack.Razor.ViewPage"> 
      <namespaces> 
       <add namespace="System" /> 
       <add namespace="System.Linq" /> 
       <add namespace="ServiceStack" /> 
       <add namespace="ServiceStack.Html" /> 
       <add namespace="ServiceStack.Razor" /> 
       <add namespace="ServiceStack.Text" /> 
       <add namespace="ServiceStack.OrmLite" /> 
       <add namespace="ProjectNamespace" /> 
       <add namespace="ProjectNamespace.ServiceModel" /> 
      </namespaces> 
     </pages> 
    </system.web.webPages.razor> 
</configuration> 

を次にServiceStack.Razorパッケージのインストール:

ServiceStack's Razor supportを有効にするために、プロジェクトを設定します
PM> Install-Package ServiceStack.Razor 

を。そこからは、例えば、あなたの要求または応答DTO後にそれを命名して、サービスのビューを追加することができます。それは、既存のサービスのためのビューモデルだとして

/Views 
    RequestDto.cshtml 
    /Shared 
     _Layout.cshtml 

を、@modelはあなたのサービスのレスポンスDTOのためになります。

すべてが正しく設定されている場合、ブラウザ(またはAccept: text/htmlのHTTPリクエスト)から既存のサービスを呼び出すと、ServiceStackのbuilt-in auto HTML outputの代わりにビューからの出力が返されます。

関連する問題