--- slug: razor-notes title: Razor Notes --- ## VS.NET Intelli-sense for self-hosting projects VS.NET Intelli-sense relies on the `Web.config` that VS.NET looks for in the root directory of your host projects. As self-hosting projects are **Console Applications** they instead use `App.config` instead which is all ServiceStack looks at for configuring Razor. Unfortunately as VS.NET's Razor intelli-sense is coupled to ASP.NET MVC, it requires a dummy Web.config in your self-hosted projects which just contains a copy of the Razor configuration in your **App.config** (which was originally populated when adding the [ServiceStack.Razor](http://www.nuget.org/packages/ServiceStack.Razor) NuGet Package to your project). The Web.config is otherwise benign and has no other effect other than enabling VS.NET's intelli-sense. ### Intelli-sense for View Models The `@model T` attribute isn't known to VS.NET intelli-sense when self-hosting which means you need to its more verbose alias: ```cs @inherits ViewPage ``` ### Web Configuration for Razor All ASP.NET Razor VS.NET Templates in [ServiceStackVS](https://github.com/ServiceStack/ServiceStackVS) uses the optimal `Web.config` template below `Web.config` for editing Razor pages without designer errors in VS.NET 2015: ```xml
``` The [ServiceStack.Razor](https://www.nuget.org/packages/ServiceStack.Razor) NuGet package uses the official [Microsoft.AspNet.Razor](https://www.nuget.org/packages/Microsoft.AspNet.Razor/) but to minimize errors in VS.NET's Razor editor, the ServiceStack' Razor templates also reference MVC's [Microsoft.AspNet.WebPages](https://www.nuget.org/packages/Microsoft.AspNet.WebPages/) NuGet package which is only used to assist Razor intellisense as ServiceStack doesn't use or need itself. To remove the last designer error **Content pages** can inherit: ```html @inherits ViewPage ``` And Typed **View Pages** can inherit: ```html @inherits ViewPage ``` Which also doesn't affect the pages behavior, but can remove the final design-time warning showing up in VS.NET's error list. #### Only configuration section used ServiceStack doesn't use the ASP.NET WebPages implementation itself, the configuration is primarily included to enable VS.NET intelli-sense and provide a way to configure the default namespaces added to Razor pages. This can also be done in code by adding to the `Config.RazorNamespaces` collection, but adding them to the config section lets VS.NET knows about them so you can get proper intelli-sense.