이전 ASP 프로그램에서는 Response.Write를 사용하여 웹 페이지 헤더 정보를 동적으로 출력하는 경우가 많았지만 ASP.NET에서는 소위 코드와 UI 분리라는 지침 원칙에 따라 더 이상 이 작업을 수행하지 않습니다. 기꺼이 할 수 있습니다. 이는 단지 제안일 뿐입니다.) 다른 사람들이 <title ranut="server" id="titleControl">기본 제목</title>을 사용하여 제목을 설정하는 것을 본 적이 있지만 저는 그렇지 않습니다. 중복된 id=" titleControl" 을 생성하기 때문에 매우 좋지 않다고 생각합니다. 개인적으로 리터럴 컨트롤을 사용하는 것이 중복 문자를 생성하지 않기 때문에 더 좋다고 생각합니다. 일부 사람들은 js를 사용하여 제목을 동적으로 설정하기도 합니다. , 그러나 검색 엔진에 무엇을 요청합니까?
실제로 페이지의 헤드 정보를 동적으로 제어하는 것은 매우 쉽습니다. 먼저 데모를 시청하십시오: http://www.lvjiyong.com/demo/aspnet/setheader/
데모는 매우 간단합니다. 소스 코드를 다운로드하여 자세히 살펴볼 수 있습니다. 주석은 모두
Literal 및 PlaceHolder가 사용됩니다.
이 메서드는 BasePage에 배치됩니다. 다음에 WebForm이 BasePage 클래스를 상속하도록 하면 이를 호출할 수 있습니다. Literal을 사용하여 제목 정보를 설정합니다.
Literal을 사용하면 먼저 텍스트 정보를 직접 설정할 수 있습니다. 먼저 프로그램에서 지정된 Literal 컨트롤이 있는지 확인하고, 있으면 Text를 설정합니다.
/**//// <요약>
/// 헤드 정보 설정
/// </summary>
/// <param name="_name">제어</param>
/// <param name="_control">텍스트</param>
개인 무효 setHeader(문자열 _control, 문자열 _text)
{
리터럴 obj = this.FindControl(_control) as Literal;
if(obj != null)
{
obj.Text = _text;
}
}
예를 들어 Head 영역에 <asp:Literal id="PageTitle" runat="server" />를 설정하면 이렇게 제목을 설정할 수 있습니다. 여기서 먼저 메소드를 준비합니다.
/**//// <요약>
///웹페이지 제목 설정
/// </summary>
/// <param name="_title">웹페이지 제목</param>
보호된 무효 SetTitle(string _title)
{
setHeader("PageTitle","<title>" + _title + "</title>");
WebFrom에서는 제목을 다음과 같이 설정할 수 있습니다.
this.SetTitle("루의 블로그");
설명, 키워드 등의 방법은 동일하지만 Meta를 설정해야 합니다. 여기서는 소스 코드를 살펴보겠습니다
. 우리는 PlaceHolder 컨트롤을 사용합니다. 리터럴 대신 이것을 사용하는 이유는 무엇입니까?
PlaceHolder는 일반적으로 컨트롤을 동적으로 로드하는 데 도움이 되는 위치만 차지합니다. 이는 js 및 css 로딩을 훨씬 더 편리하게 만듭니다. 먼저 지정된 PlaceHolder 컨트롤도 찾습니다.
/**//// <요약>
/// LoadHeader의 PlaceHolder 컨테이너를 찾습니다.
/// </summary>
/// <반환></반환>
개인 제어 findHeader()
{
return this.FindControl("LoadHeader");
}그런 다음 동적으로 컨트롤을 추가합니다.
/**//// <요약>
/// PlaceHolder 컨트롤에 컨트롤 로드
/// </summary>
/// <param name="_obj"></param>
보호된 무효 LoadPlaceHolder(HtmlGenericControl _obj)
{
objHeader = findHeader() as Control;
//스크립트 파일 로드
if(objHeader != null)
{
objHeader.Controls.Add(_obj)
}
}CSS 또는 JS를 로드하려면 먼저 HtmlGenericControl을 사용하여 하위 컨트롤을 만든 다음 이를 PlaceHolder 컨트롤에 추가합니다.
/**//// <요약>
/// 지정된 스타일 시트 파일 로드
/// </summary>
/// <param name="_cssPath">스타일 시트 파일 주소</param>
보호된 무효 LoadCss(string _cssPath)
{
HtmlGenericControl objCss = new HtmlGenericControl("link");
objCss.Attributes["rel"] = "스타일시트";
objCss.Attributes["type"] = "텍스트/css";
objCss.Attributes["href"] = _cssPath;
objCss.Attributes["media"] = "화면";
this.LoadPlaceHolder(objCss);
}
그런 다음 WebForm에 스타일 시트를 로드하려면 다음을 사용하면 됩니다.
this.LoadCss("Style Sheet Address"); js를 로드하는 것과 동일합니다. 언급하지 않겠습니다.
제가 소스 코드에 작성한 기능은 여기에 언급된 것보다 조금 더 좋습니다. 당신 자신.