asp.net-mvc – ASP.NET MVC 6中的基本视图页面

在ASP.NET MVC 5上,我使用了具有一些属性的基本ViewPage:
public String PageTitle { get; set; }
public String PageDescription { get; set; }
public String[] BodyCssClasses { get; set; }

然后在每个视图上我会:

@{
  PageTitle = "Title ..."
  PageDescription" = "Description ..."
  BodyCssClasses = new String[] { "main","home" }
}

在母版页上,我只想使用以下内容

<title>@Title</title>

通过这种方法,我能够使用强类型页面属性

是否可以在ASP.NET MVC 6中使用基本视图页面

既然没有Web.Config怎么办呢?

欢迎任何有关定义页面头信息的更好选项的建议.

UPDATE

我按照建议我正在使用:

public abstract class ViewPageBase<TModel> : RazorPage<TModel> {
  public String Title { get; set; }
} // ViewPageBase

然后在_ViewImports我有

@inherits ViewPageBase<TModel>

在_Layout.cshtml上我有

<title>@Title</title>

最后在一个使用我的布局的视图上:

@{
  Title = "Page Title";
  Layout = "_Layout";
}

所有内容都编译并运行,但页面标题始终为空.

有谁知道为什么?

解决方法

您可能希望使基本视图页继承自RazorPage.
public abstract class ViewPageBase<TModel> : RazorPage<TModel>
{
}

然后,您应该能够在_ViewImports.cshtml文件中配置所有要继承的页面.

@inherits ViewPageBase<TModel>

UPDATE

不确定这是否是最佳方法,但我想知道您是否可以使用常见的ViewBag在View和Layout之间共享数据.

使用ViewBag返回基页类中的属性

public abstract class ViewPageBase<TModel> : RazorPage<TModel>
{
    public string Title
    {
        get { return ViewBag.Title; }
        set { ViewBag.Title = value; }
    }
}

在视图中设置属性

@{
    Title = "Home Page"; 
}

使用_Layout.cshtml中的属性

<title>@Title</title>

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....