加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 04:23:30 所属栏目:asp.Net 来源:网络整理
导读:在ASP.NET MVC 5上,我使用了具有一些属性的基本ViewPage: public String PageTitle { get; set; }public String PageDescription { get; set; }public String[] BodyCssClasses { get; set; } 然后在每个视图上我会: @{ PageTitle = "Title ..." PageDescr
在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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读