在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";
- }
有谁知道为什么?
@H_502_42@解决方法
您可能希望使基本视图页继承自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中的属性:
@H_502_42@ @H_502_42@
- <title>@Title</title>