2012-10-29 2 views
2

이렇게 할 수있는 방법이 있습니까? ASP.NET MVC 4 Url.Content 번들의 이점 사용

번들의 장점 중 일부

은 다음과 같습니다

  • 최소화
  • Gzip 압축
  • 요청이 처리하는 파일 versiones (캐시)에 대한 토큰 매개 변수가 있습니다.

내 사이트에는 많은 번들을 사용하지만 일부 페이지에는 스크립트가 하나 뿐이므로 한 스크립트 만 번들을 만들어야한다고 생각하지 않습니다. Url.Content 방법으로이 세 가지 이점을 사용할 수있는 방법이 있습니까?

필자의 유창한 솔루션은 (아마도 web.config에서) 설정하고 Url.Content를 호출 할 때마다이 기능을 추가하는 것입니다. 이 중 하나의 방법을 사용 : 그게 내가 확장 방법은이 기능을 추가 할 수 UrlHelper 할 수 할 수없는 경우

<script type="text/javascript" src="@Url.Content("~/Scripts/...")"></script> 
<script type="text/javascript" src="~/Scripts/..."></script> 

(나는 Razor 2을 사용하고 있기 때문에 두 번째입니다).

감사합니다.

답변

1

축소 및 버전 관리의 이점을 얻으려면 파일 하나를 사용하여 번들을 만드는 것이 실제로 잘못된 것은 아닙니다. Scripts.Render 도우미도 사용해야 할 것입니다. 현재 UrlHelper에는이 기능이 지원되지 않지만 이미 언급 한 것처럼 스크립트 도우미를 호출하는 확장 메서드를 작성할 수 있습니다. 이미 만들어 내 Html 헬퍼가 (필요한 경우)에서 번들을 사용

public static IHtmlString DynamicScriptsBundle(this HtmlHelper htmlHelper, string nombre, params string[] urls) 
{ 
    string path = string.Format("~/{0}", nombre); 
    if (BundleTable.Bundles.GetBundleFor(path) == null) 
     BundleTable.Bundles.Add(new ScriptBundle(path).Include(urls)); 
    return Scripts.Render(path); 
} 

public static IHtmlString DynamicStylesBundle(this HtmlHelper htmlHelper, string nombre, params string[] urls) 
{ 
    string path = string.Format("~/{0}", nombre); 
    if (BundleTable.Bundles.GetBundleFor(path) == null) 
     BundleTable.Bundles.Add(new StyleBundle(path).Include(urls)); 
    return Styles.Render(path); 
} 
+0

: (OP에 의해)

업데이트는 다음

그것을 사용하고자하는 사람을위한 내 확장 방법입니다 보기. 나는 여전히 1 파일을위한 번들을 만드는 것에 대해 확신하지 못하고있다. 다른 방법이 없습니까? – Diego

+0

.aspx 파일에서'Bundles.Add()'를 사용하는 좋은 해결책입니다. 최근에 번들을 사용하도록 웹 응용 프로그램을 변환했지만이 방법을 사용하는 것으로 생각했지만 '