微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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>

原文地址:https://www.jb51.cc/aspnet/248132.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐