문제

오늘, 나는 CSHTML 도우미를 추가 할 수있는 능력을주는 아주 좋은 기능을 발견했습니다.그렇게 할 수 있으려면 CSHTML 파일을 'app_code'라는 폴더에 넣은 다음 해당 코드로 추가해야합니다.

@using System.Security.Policy

@helper jQuery(){
   if (System.Diagnostics.Debugger.IsAttached)
   {
        <script src="@Url.Content("~/Scripts/JQuery/jquery-1.7.2.js")" type="text/javascript"></script>
   }
   else
   {
        <script src="@Url.Content("~/Scripts/JQuery/jquery-1.7.2.min.js")" type="text/javascript"></script>
   }
}
.

문제가 하나의 파일 로이 폴더를 추가 한 후에 문제가 발생하면 브라우저에서 페이지에 액세스하려고하면 서버 오류가 발생합니다.

"NetworkError : 500 내부 서버 오류 - http : // localhost / [port] ...

이미 프로젝트의 다른 폴더에 코드가 있습니다.

모든 코드를 'app_code'폴더로 이동하거나 기존 구조를 유지할 트릭이 있지만이 새로운 'app_code'폴더를 유지해야합니까?

고맙습니다.

도움이 되었습니까?

해결책

도우미 내의 도우미를 사용할 수 없으므로 처음에 생각할 수있는 것처럼 도움이되지 않습니다 :-)

HtmlUrl와 같은 것들은 해당 도우미 기능 내에 존재하지 않습니다.그래서 당신이 그들을 사용해야하는 경우, 당신은 그들을 매개 변수로 전달해야합니다 :

@using System.Web.Mvc
@using System.Security.Policy

@helper jQuery(UrlHelper urlHelper)
{
   if (System.Diagnostics.Debugger.IsAttached)
   {
        <script src="@urlHelper.Content("~/Scripts/JQuery/jquery-1.7.2.js")" type="text/javascript"></script>
   }
   else
   {
        <script src="@urlHelper.Content("~/Scripts/JQuery/jquery-1.7.2.min.js")" type="text/javascript"></script>
   }
}
.

및 현재 URLHelper의 인스턴스를 호출 할 때 :

@Foo.jQuery(Url)
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top