Creo que todos han tratado de usar JavaScript en una vista, y puede usar directamente la sintaxis de afeitar para llamar a algunos métodos de .NET. Como el siguiente código está anidado en una vista de afeitar:
<script> var currdate = '@dateTime.now'; // Llamar directamente al método .net console.log (currdate) </script>
Pero otra situación es que si quiero usar Razor en un archivo JS separado, el método anterior no funcionará, porque MVC no interpretará directamente el archivo JS, y solo se puede poner en la vista de afeitar. Sin embargo, aquí le recomiendo una biblioteca de terceros, que le permite usar Razor directamente en archivos JS independientes
El nombre de esta biblioteca es Razorjs. Este es un proyecto de código abierto. Puede descargar el código fuente de la siguiente dirección:
https://bitbucket.org/djsolid/razorjs
O puede instalarlo directamente a través de Nuget:
PM> Razorjs
Ok, hablemos de lo que esta biblioteca nos puede traer primero. Después de la instalación, puede usar directamente todos los métodos compatibles con .NET en el archivo JS. Por ejemplo, el código anterior se puede colocar directamente en un archivo JS independiente para su uso. Además, también puede consultar el espacio de nombres completo de .NET en el archivo JS. Si desea llamar al objeto Archivo para leer el contenido del archivo de texto, puede consultar directamente el espacio de nombres System.io:
@using System.io; var s = 'hola en @datetime.now /n @file.readallText (system.web.hosting.hostingenvironment.mappath ("~ /web.config"))';Después de ejecutar, puede obtener directamente todos los contenidos en el archivo web.config en JS. Se ve bastante bien, jaja. Entonces, ¿cómo funciona exactamente este tipo de biblioteca? De hecho, utiliza una biblioteca de clase llamada RazorEngine para lograr los efectos anteriores. RazorEngine es un motor de explicación de Razor que es muy potente y lo he usado en algunos proyectos antes. A través de este motor, incluso puede usar la sintaxis de afeitar directamente en forma de ganar. Jaja, ¿me pregunto si tienes alguna idea de sus beneficios?
Bueno, bueno, con este motor, puede usar la navaja de afeitar de MVC en un entorno web completamente independiente. Esta función le permite hacer algunas plantillas flexibles muy convenientemente, como algunas plantillas de correo electrónico. Puede usar directamente varios métodos .NET o incluso objetos personalizados en la plantilla, y luego generar dinámicamente el contenido deseado. Ok, pero este motor no es lo que quiero presentar esta vez, solo estoy hablando de eso aquí
A continuación, hablemos sobre el uso de Razorjs. Si lo instala directamente a través de NUGET, configurará automáticamente Web.Config para usted. Este es el método de instalación recomendado. De lo contrario, debe agregar la configuración en Web.Config usted mismo. Hay varios lugares, y no entraré en detalles aquí. Puede compararlo después de instalarlo. También es muy simple usar RazorJS, solo consulte el archivo JS que desea usar la siguiente sintaxis:
<p> @html.razorjsinline ("~/scripts/ejemplo.js") </p>Sin embargo, una cosa a tener en cuenta es que habrá un directorio en su web.config que permite que Razorjs use, es decir, su archivo JS debe colocarse en este directorio antes de poder usar este método para hacer referencia a:
<RazorJSSettings HandlerPath = "~/Razorjs.axd"> <permitidopaths> <add path = "~/scripts"/> </ododpaths> </razorjssettings>
Lo último de lo que quiero hablar son sus limitaciones. Hay cosas buenas y lados malos. Dado que usa RazorEngine, no puede usar el método HTML Helper de MVC en JS, es decir, todos los métodos que comienzan con @HTML. Otro problema es que no puede reconocer el código de comentarios en JS. Es decir, si usa métodos .NET en los comentarios, también se ejecutará. Si su método es correcto, no habrá ningún problema. De lo contrario, la ejecución de JS se interrumpirá y se informará directamente un error. Así que no piense que el método inútil es suficiente para comentar.
Con respecto al problema de no poder ejecutar @html ayudante, proporciono otra solución aquí, pero esto le permite modificar su código fuente. Los amigos que quieran tirar pueden probarlo. De hecho, puede usar muchos métodos personalizados para hacer esto, lo cual es más flexible y conveniente. Después de descargar el código fuente de RazorJS, puede modificarlo directamente en él y recompilar una DLL. Otra forma es usar su código fuente como otro proyecto y agregarlo directamente a su propio proyecto.
En su código fuente, abra el archivo htmltemplatebase.cs, y puede agregar sus propios métodos aquí, y luego todos los métodos agregados aquí pueden llamarse directamente en JS. Si puede encontrar un método HREF encapsulado en el código fuente, puede convertir la URL en una URL disponible en el cliente solicitante. Según este método de escritura, podemos agregar nuestros propios métodos, como el siguiente es mi método para encapsular un archivo de recursos internacional de obtención dinámica, para que podamos usar directamente archivos de recursos .NET en JS para la internacionalización:
clase pública htmltemplateBase: TemplateBase {// Llame manualmente al administrador de archivos de recursos privados static static gemerager recursos = (resurgemanager) system.type.gettype ("Razorjs.resource"). GetProperty ("ResourceCemanager"). 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) {retorno de lenguaje relacionado basado en la clave de retorno recursos.getString (langkey); } URL de URLHELPER Public {get; colocar; }}Luego llámalo directamente en JS:
var s = '@getlangText ("coderblog")'; console.log (s);Después de ejecutar, puede ingresar directamente el contenido de la clave CoderBlog en JS.