이러한 경우 나는 보통 내 마스터 페이지의 태그에 ContentPlaceHolder를 추가합니다.
다른 방법 나는 그렇게 같은 ASP.Net 컨텍스트의 목록 저장을에 스크립트 문자열을두고 (보통 유틸리티 클래스 또는 PageBase 클래스의) 방법을 사용했습니다 : 그런 다음
List<string> javaScriptUrls = new List<string>();
url = url.ToLower();
javaScriptUrls = Context.Items[JS_KEY] as List<string>;
if (javaScriptUrls == null)
{
javaScriptUrls = new List<string>();
javaScriptUrls.Add(url);
}
else
{
if (!javaScriptUrls.Contains(url))
javaScriptUrls.Add(url);
}
Context.Items[JS_KEY] = javaScriptUrls;
OnPreRender 컨텍스트에서이 목록을 읽고 헤더의 태그를 만듭니다.
List<string> _javaScript = Context.Items[JS_KEY] as List<string>;
foreach (string js in _javaScript)
{
HtmlGenericControl script = new HtmlGenericControl();
script.TagName = "script";
script.Attributes.Add("type", "text/javascript");
if (js.StartsWith("~/"))
script.Attributes.Add("src", head.ResolveUrl(js));
else
script.Attributes.Add("src", js);
head.Controls.Add(script);
AddHeaderLineBreak(head);
}
철저한 답변 주셔서 감사합니다. 이 해결 방법은 "IsClientScriptIncludeRegistered"를 사용할 수 없다는 것을 의미합니다. 목록에 URL을 계속 추가 한 다음 고유 항목 만 등록 할 수 있다고 가정합니다. –
이 맞습니다. 다음 행을 확인하십시오. if (! javaScriptUrls.Contains (url.ToLower()) javaScriptUrls.Add (url); 목록에서 고유성을 유지합니다. – hunter