Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 在整个网站上保持不变的标题_Html_Asp.net Mvc_Web - Fatal编程技术网

Html 在整个网站上保持不变的标题

Html 在整个网站上保持不变的标题,html,asp.net-mvc,web,Html,Asp.net Mvc,Web,如果我在ASP.NET中创建一个网站,是否可以通过编程将页面标题设置为某个预定义值并附加一些额外信息?例如: Home Page Title = Site Name Links Title = Site Name: Links Stuff Title = Site Name: Stuff 基本上,无论我在当前页面上定义的主标题是什么,我都希望在标题的末尾加上“:Name”,这样它在整个网站上保持一致。我曾考虑将其定义为一个ContentPlaceHolder,

如果我在ASP.NET中创建一个网站,是否可以通过编程将页面标题设置为某个预定义值并附加一些额外信息?例如:

 Home Page   Title = Site Name
 Links       Title = Site Name: Links
 Stuff       Title = Site Name: Stuff

基本上,无论我在当前页面上定义的主标题是什么,我都希望在标题的末尾加上“:Name”,这样它在整个网站上保持一致。我曾考虑将其定义为一个ContentPlaceHolder,并围绕它包装一些逻辑,但它似乎并不像我想象的那样工作(也就是说,一点也不工作)。

Expression Web既有动态Web模板(目前我最喜欢的)也有母版页。DWT非常易于使用,并且完全符合您的要求,是一个实时的节省器。为整个站点创建一个DWT(模板页面),然后在该页面中创建可编辑区域,可以对这些区域进行编辑以使所有其他页面都具有唯一性。此外,Expression Web与其他MS产品和功能(如Visual Studio和ASP.NET)配合使用效果非常好。

这可能会回答您的问题:
在母版页中尝试此操作

protected void Page_Load(object sender, EventArgs e)
{
PreRender += new EventHandler(MasterPage_PreRender);
}

void MasterPage_PreRender(object sender, EventArgs e)
{
Page.Title = "Site Name - " + Page.Title;
}

并将页面标题放在内容页的@Page指令中(title=“Blah”使其成为“Site Name-Blah”)

如果您使用的是母版页,Lerxst应该这样做,否则您可以使用一个基本页来完成您想要的内容。大概是这样的:

public abstract class BasePage : Page
{
  protected abstract string Subtitle { get; }
  protected BasePage()
  {
    Page.Load += (s, e) => { Title = "Site Name: " + Subtitle; };
  }}

虽然Lerkst的答案适用于ASP.NETWebForms,但我正试图通过ASP.NETMVC实现这一点。因此,Site.Master没有代码隐藏页面(因为不应该有代码隐藏页面)。所以,在做了一点研究之后,我遇到了t,它讨论了如何使用ActionFilterAttribute在数据设置中使用控制器(视图是“哑”的,只渲染它)。这允许我将数据插入视图,从而完成我想要做的事情


希望这对其他人有帮助

那么,也许还有别的地方出了问题。我(基本上)是这样做的,但它似乎根本没有改变页面的标题。即使我将断点放入代码隐藏中(在Page_Load事件处理程序中),它也不会在加载时停止。有什么建议吗?不确定这里出了什么问题,但请尝试将PreRender中的行放入页面加载处理程序。在我的测试中,我可以将这一行直接放在页面加载中,并且它起了作用。如果您使用的是C#,那么页面加载处理程序应该已经连接并添加到代码文件中。把那条线插进去,这可能是问题的一部分。Site.Master文件没有代码隐藏文件,所以我必须自己创建它(Site.Master.cs)并扩展页面,然后创建上述方法。我正在使用ASP.NETMVC,所以我不知道这是否会改变什么。(我尝试了你的建议,但没有解决问题。)我不确定这是否会导致问题,你能从代码后面粘贴@Master声明和类定义吗?听起来他们好像没有联系。。。