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

前端之家收集整理的这篇文章主要介绍了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>

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