将Razor添加到成熟的现有Servicestack项目中,而无需更改现有功能

时间:2017-02-09 14:07:16

标签: razor servicestack

我有一个多年的ServiceStack项目,它为传统的Winforms应用程序以及更新的html / css / javascript网站提供服务。我现在需要为这些应用程序提供一些预先格式化的视图(特别是当我们添加Xamarin移动平台时),看起来Servicestack.Razor似乎是合乎逻辑的方式。

我不确定将Razor添加到现有项目的最佳方式,而不是重新开始使用新项目。我可以自己添加必要的视图文件夹,引用和web.config元素吗?

此外,仍然提供服务的标准URL约定是什么(可从上述应用程序调用),但现在添加该服务的视图?这是一条新路线吗?

1 个答案:

答案 0 :(得分:2)

您可以通过添加所需的config sections to your Web.config将Razor添加到现有的ServiceStack Web App:

<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包:

PM> Install-Package ServiceStack.Razor

这将配置您的项目以启用ServiceStack's Razor support。从那里,您可以通过在请求或响应DTO之后命名为您的服务添加视图,例如:

/Views
    RequestDto.cshtml
    /Shared
        _Layout.cshtml

由于它是现有服务的视图模型,@model将用于您的服务响应DTO。

如果一切配置正确,从浏览器(或任何带有Accept: text/html的HTTP请求)调用现有服务将返回视图中的输出,而不是ServiceStack的built-in auto HTML output