2011-08-21 7 views
5

Si tengo tales javascript en mi máquina de afeitar veiw:Cómo pasar parámetros a javascript archivo de referencia de la vista de afeitar

@{ 
    Grid grid = @Model.GetGridFromModel(); 

    Bool isSomething = @Model.GetSomething(); 

    Bool isSomethingMore = @Model.GetSomehtingMore(); 

    Bool isSomethingElse = @Model.GetSomethingElse() 

    int caseCount = 0; 
} 



$(document).ready(function() {  
    $("#tabs").tabs({ 
     show: function (event, ui) {   
      switch (ui.index) { 
      @if (isSomething){ 
      <text> 
       case @caseCount:      

        change('@grid.Avalue'); 

        break; 
      </text> 
       caseCount++; 
       } 

      @if(isSomethingElse){ 
      <text> 
       case @caseCount: 

        change('@grid.Bvalue'); 
        break; 
      </text> 
       caseCount++; 
       } 

      @if (isSomethingElseMore){ 
      <text> 
       case @caseCount: 
        change('@grid.Cvalue'); 
        break; 
       </text>     
       } 
      } 
     } 
    }); 

    funciton change(id) 
    { 
    //doing somehting; 
    } 

así que quiero poner ese javascript en archivo y de referencia separado ese archivo a mi modo de ver, y el problema es cómo puedo pasar los valores de razor a javascript cuando javascript en un archivo separado?

Respuesta

7

Javascript son archivos sin ser analizada por el compilador, por lo que, no tienes oportunidad ...

Lo que se puede hacer sin embargo es utilizar un javascript dinámica, por ejemplo:

<script src="/CustomScripts/scripts.js"><script> 

tiene una ruta que dice:

routes.MapRoute(
    "CustomScripts", "CustomScripts/{id}", 
    new { controller = "Scripts", action = "GetFile" } 
); 

Cree su controladora y el uso de un simple return View(); como

public ActionResult GetFile(string id) 
{ 
    // use id as you please 

    // pass any Model you want 

    return View(); 
} 

En esa vista, simplemente ingrese su javascript con sintaxis Razor.


O bien, puede utilizar variables y la carga que arriba hacen que el uso de RenderSection()

en su archivo _Layout.cshtml añadir una sección en su <head> antes que cualquier otro Javascript

<head> 
    <meta charset="utf-8" /> 
    <title>@ViewBag.Title</title> 
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 

    @RenderSection("script_variables", false) 

    <script src="@Url.Content("~/Scripts/jquery-1.6.2.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/modernizr-2.0.6-development-only.js")" type="text/javascript"></script>  
</head> 

y en cualquier View Si desea agregar tales variables, solo haga lo siguiente:

@Section script_variables { 

    <script type="text/javascript"> 

     var variableA = '@MyVarA', 
      variableB = '@MyVarB', 
      variableC = '@MyVarC'; 

    </script> 

} 

Y todos los demás archivos que cargue la secuencia de comandos tendrán dicho código ...

1

Es posible declarar algunos js-variables en su página y luego utilizar esas variables desde el archivo js-

Es posible llamar a una función dentro de su Js-archivo y enviar sus datos como argumentos

(por favor, considere la creación de un objeto y rellenar con sus datos en lugar de crear múltiples variables.)

+0

¿podría proporcionarnos un poco más de información? – Joper

Cuestiones relacionadas