将 .net 框架迁移到 .netcore 3.1Servicestack.Razor 视图

问题描述

我正在将 .net 框架 Web 迁移到 .netcore

移动“视图”文件夹时遇到问题。似乎每个剃须刀页面都带有 @inherits ViewPage<TModel>

我收到错误 "The type or namespace 'ViewPage<>' Could not be found (are you missing a using directive or an assembly reference?).

我已经在我的项目中安装了 ServiceStack.Razor 和 ServiceStack.Mvc nuget 包,但它无法在 Views 文件夹中识别它。

在我的 _ViewImports.cshtml 上,我还添加了 @using 包引用

此外,我正在使用来自 ServiceStack.Razor 的“Request.[]”,但它无法识别请求。

对我缺少的东西有什么想法吗?我应该将其更新为@model 吗?当我更新到@model 时它工作正常但“请求”仍然无法识别

解决方法

ServiceStack 中的大多数功能可以移植和多目标以支持 .NET Framework 和 .NET Core,不同的是,ServiceStack.Razor 与 System.Web could not support .NET Core 的耦合。

相反,ServiceStack.Razor for .NET Core 被重写为在 ASP.NET Core MVC 之上工作,该 MVC 仅包含在 ServiceStack.Mvc 包中,而不是仅包含在 .NET Framework 中的 ServiceStack。 Razor 包(不应在 .NET Core 中引用)。

大部分语法保持不变,因此移植仍然需要少量工作,如 ServiceStack.Razor 的 Razor Rockstars .NET Core 移植与原始 .NET Framework 中所见:

但鉴于它是在 ASP.NET Core MVC 之上的重写,我不会尝试转换您现有的 ServiceStack.Razor 项目,而是 从一个空的新 razor 项目开始,所以它从一个众所周知的工作配置开始,然后将您现有的 Razor 视图和服务复制到新项目中。

您可以通过任一命令行创建 razor 项目:

$ x new razor ProjectName

或使用 ServiceStack 的在线项目模板创建器:https://servicestack.net/start