모든 사람이보기에서 JavaScript를 사용하려고했으며 Razor Syntax를 직접 사용하여 .NET의 일부 방법을 호출 할 수 있습니다. 다음 코드가 면도기보기에 중첩되므로 :
<cript> var currdate = '@datetime.now'; // .NET 메소드 console.log (currdate) </script>를 직접 호출하십시오
그러나 또 다른 상황은 별도의 JS 파일에서 Razor를 사용하려면 MVC가 JS 파일을 직접 해석하지 않기 때문에 위의 방법이 작동하지 않으며 Razor보기에만 적용 할 수 있다는 것입니다. 그러나 여기에서는 제 3 자 라이브러리를 추천합니다.이 라이브러리는 독립적 인 JS 파일에서 직접 면도기를 사용할 수 있습니다.
이 라이브러리의 이름은 Razorjs입니다. 이것은 오픈 소스 프로젝트입니다. 다음 주소에서 소스 코드를 다운로드 할 수 있습니다.
https://bitbucket.org/djsolid/razorjs
또는 Nuget을 통해 직접 설치할 수 있습니다.
PM> 설치 패키지 Razorjs
좋아,이 도서관이 우리에게 먼저 가져올 수있는 것에 대해 이야기합시다. 설치 후 JS 파일에서 모든 .NET 지원 방법을 직접 사용할 수 있습니다. 예를 들어, 위의 코드는 사용하기 위해 독립적 인 JS 파일에 직접 배치 될 수 있습니다. 또한 JS 파일에서 .NET의 전체 네임 스페이스를 참조 할 수도 있습니다. 파일 객체를 호출하여 텍스트 파일의 내용을 읽으려면 System.io 네임 스페이스를 직접 참조 할 수 있습니다.
@using system.io; var s = 'hello at @datetime.now /n @file.readalLtext (system.web.hosting.hostingenvironment.mappath ( "~ /web.config"))';
실행 후 JS의 Web.Config 파일에서 모든 내용을 직접 가져올 수 있습니다. 꽤 좋아 보인다, 하하 그렇다면이 유형의 라이브러리는 정확히 어떻게 작동합니까? 실제로, 그것은 위의 효과를 달성하기 위해 Razorengine이라는 클래스 라이브러리를 사용합니다. RazorEngine은 매우 강력한 면도기 설명 엔진이며 이전에 일부 프로젝트에서 사용해 왔습니다. 이 엔진을 통해 Razor 구문을 WIN 형식으로 직접 사용할 수도 있습니다. 하하, 그 혜택에 대한 아이디어가 있는지 궁금합니다.
이 엔진을 사용하면 완전히 독립적 인 웹 환경에서 MVC의 면도기를 사용할 수 있습니다. 이 기능을 사용하면 일부 전자 메일 템플릿과 같은 유연한 템플릿을 매우 편리하게 만들 수 있습니다. 템플릿에서 다양한 .NET 메소드 또는 사용자 정의 객체를 직접 사용한 다음 원하는 컨텐츠를 동적으로 생성 할 수 있습니다. 좋아요,하지만이 엔진은 이번에 소개하고 싶은 것이 아닙니다.
다음으로 Razorjs의 사용에 대해 이야기 해 봅시다. Nuget을 통해 직접 설치하면 자동으로 Web.Config를 구성합니다. 권장 설치 방법입니다. 그렇지 않으면 web.config에 구성을 추가해야합니다. 여러 곳이 있으며 여기에 자세한 내용은 없습니다. 설치 후 비교할 수 있습니다. Razorjs를 사용하는 것은 매우 간단합니다. 다음 구문을 사용하려는 JS 파일을 참조하십시오.
<p> @html.razorjsinline ( "~/scripts/example.js") </p>
그러나 주목할만한 점은 Web.config에 Razorjs를 사용할 수있는 디렉토리가 있다는 것입니다.
<razorjssettings handlerpath = "~/razorjs.axd"> <allendPaths> <add add path = "~/scripts"/> </allendPaths> </razorjssettings>
내가 마지막으로 이야기하고 싶은 것은 그 한계입니다. 좋은 것과 나쁜면이 있습니다. RazorEngine을 사용하므로 JS에서 MVC의 HTML 헬퍼 방법, 즉 @HTML로 시작하는 모든 방법을 사용할 수 없습니다. 또 다른 문제는 JS에서 주석 코드를 인식 할 수 없다는 것입니다. 즉, 주석에서 .NET 메소드를 사용하면 실행됩니다. 방법이 올바른 경우 문제가 없습니다. 그렇지 않으면 JS 실행이 중단되고 오류가 직접보고됩니다. 따라서 쓸모없는 방법이 논평하기에 충분하다고 생각하지 마십시오.
@HTML 헬퍼를 실행할 수없는 문제와 관련하여 여기에 다른 솔루션을 제공하지만 소스 코드를 수정할 수 있습니다. 던지고 싶은 친구들은 그것을 시도 할 수 있습니다. 실제로, 많은 사용자 정의 방법을 사용하여이를 수행 할 수 있으며, 이는보다 유연하고 편리합니다. Razorjs 소스 코드를 다운로드 한 후 직접 수정하고 DLL을 다시 컴파일 할 수 있습니다. 또 다른 방법은 소스 코드를 다른 프로젝트로 사용하여 자신의 프로젝트에 직접 추가하는 것입니다.
소스 코드에서 htmltemplatebase.cs 파일을 열면 여기에 자체 메소드를 추가 한 다음 여기에 추가 된 모든 메소드를 JS에서 직접 호출 할 수 있습니다. 소스 코드에서 캡슐화 된 HREF 메소드를 찾을 수 있으면 요청 클라이언트에서 사용 가능한 URL로 URL을 변환 할 수 있습니다. 이 글쓰기 방법에 따르면, 우리는 국제화를 위해 JS에서 .NET 리소스 파일을 직접 사용할 수 있도록 다음과 같은 자체 방법을 추가 할 수 있습니다.
public class htmltemplatebase : templatebase {// 리소스 파일 관리자를 수동으로 호출합니다. private static resourcemanager resources = (resourcemanager) system.type.getType ( "razorjs.resource"). getProperty ( "resourcemanager"). getValue (null, null); public htmltemplatebase () {url = new urlhelper (httpcontext.current.request.requestContext); } public String href (String OriginalUrl) {return extensions.resolveUrl (OriginalUrl); } public string getLangtext (String Langkey) {키 리턴 리소스를 기반으로 관련 언어를 반환합니다. GetString (Langkey); } public urlHelper url {get; 세트; }}그런 다음 JS에서 직접 호출하십시오.
var s = '@getLangtext ( "coderBlog")'; console.log (s);
실행 후 JS에서 CoderBlog 키의 내용을 직접 입력 할 수 있습니다.