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

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – ASP.NET MVC 6中的基本视图页面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在ASP.NET MVC 5上,我使用了具有一些属性的基本ViewPage:
  1. public String PageTitle { get; set; }
  2. public String PageDescription { get; set; }
  3. public String[] BodyCssClasses { get; set; }

然后在每个视图上我会:

  1. @{
  2. PageTitle = "Title ..."
  3. PageDescription" = "Description ..."
  4. BodyCssClasses = new String[] { "main","home" }
  5. }

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

  1. <title>@Title</title>

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

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

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

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

UPDATE

我按照建议我正在使用:

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

然后在_ViewImports我有:

  1. @inherits ViewPageBase<TModel>

在_Layout.cshtml上我有:

  1. <title>@Title</title>

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

  1. @{
  2. Title = "Page Title";
  3. Layout = "_Layout";
  4. }

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

有谁知道为什么?

@H_502_42@

解决方法

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

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

  1. @inherits ViewPageBase<TModel>

UPDATE

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

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

  1. public abstract class ViewPageBase<TModel> : RazorPage<TModel>
  2. {
  3. public string Title
  4. {
  5. get { return ViewBag.Title; }
  6. set { ViewBag.Title = value; }
  7. }
  8. }

在视图中设置属性

  1. @{
  2. Title = "Home Page";
  3. }

使用_Layout.cshtml中的属性

  1. <title>@Title</title>
@H_502_42@ @H_502_42@

猜你在找的asp.Net相关文章