ASP.NET 网页:覆盖内容页面布局中定义的值
ASP.NET Web Pages: Overriding values defined in layout from content pages
我在覆盖布局页面顶部定义的值时遇到问题。
例如,如果我在布局页面的顶部有这个:
@{
Page.ShowProgressBar = false;
}
并读取布局中某处的值:
@ if (Page.ShowProgressBar) {
// do some processing in the layout
}
如何选择设置
@{
Page.ShowProgressBar = true;
}
在内容页面中?
换句话说,我想在布局中为Page.ShowProgressBar提供默认值,并在内容页面需要时覆盖它。
这也意味着我 不想在所有内容页面中为 Page.ShowProgressBar 设置值。
布局页面在内容页面之后执行,因此您选择在内容页面中设置的任何值都将被布局页面覆盖。您应该使用 _PageStart.cshtml
文件来设置默认值。 _PageStart.cshtml
在 之前 内容页面执行,因此您可以覆盖内容页面中的值。
或者,您可以使用 _AppStart.cshtml 文件来设置一个应用程序级变量,您可以在任何地方覆盖它。您可以在此处阅读有关这些文件的更多信息:http://www.asp.net/web-pages/overview/ui,-layouts,-and-themes/18-customizing-site-wide-behavior
我在覆盖布局页面顶部定义的值时遇到问题。
例如,如果我在布局页面的顶部有这个:
@{
Page.ShowProgressBar = false;
}
并读取布局中某处的值:
@ if (Page.ShowProgressBar) {
// do some processing in the layout
}
如何选择设置
@{
Page.ShowProgressBar = true;
}
在内容页面中?
换句话说,我想在布局中为Page.ShowProgressBar提供默认值,并在内容页面需要时覆盖它。
这也意味着我 不想在所有内容页面中为 Page.ShowProgressBar 设置值。
布局页面在内容页面之后执行,因此您选择在内容页面中设置的任何值都将被布局页面覆盖。您应该使用 _PageStart.cshtml
文件来设置默认值。 _PageStart.cshtml
在 之前 内容页面执行,因此您可以覆盖内容页面中的值。
或者,您可以使用 _AppStart.cshtml 文件来设置一个应用程序级变量,您可以在任何地方覆盖它。您可以在此处阅读有关这些文件的更多信息:http://www.asp.net/web-pages/overview/ui,-layouts,-and-themes/18-customizing-site-wide-behavior