.net(C#)提示错误使用 Page 的 Title 属性要求页上有标头控件
为便于修改网页的标题和关键词,通常把它们用代码动态显示,有的时候设置不当会抛出异常,这种错误比较少见,不认真看一下还真不知道是怎么回事,具体错误提示如下:
使用 Page 的 Title 属性要求页上有标头控件。(例如 <head runat="server" />)。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 使用 Page 的 Title 属性要求页上有标头控件。(例如 <head runat="server" />)。
源错误:
行 44: KeyWords.Text = "<meta name=\"Keywords\" content=\""+ PageTitle +"\" />";
行 46: string description ="<meta name=\"Description\" content=\"" + PageDescription + "\" />";
错误提示中有这么一句话:使用 Page 的 Title 属性要求页上有标头控件。单从这句话来看意思不怎么明显,如果不看后面的“例如 <head runat="server" />”还真让人摸不着头脑,有这句话才知道原来是网页的头部上少了 runat="server" 标示控件在服务器运行的语句,知道原因后解决办法也就出来了。
解决办法:
只需在网页的头部加上 runat="server",问题就解决了,即:<head runat="server">。
默认情况下,<head>标签是有 runat="server" 的,为了不让网页标题换行,所以把 runat="server" 去掉了。如果仍然不想让网页标题换行,必须得把 runat="server" 去掉,但不能用控件输出网页标题和描述了,可以在后台定义保护成员字符变量,即:
protected string KeyWord;
protected string Description;
给它们赋值后在前台输出就可以了。