在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>