2011-08-21 21 views
5

Eğer benim jilet veiw'de javascript varsaJilet görünümünden referans alınan javascript dosyasına parametreler nasıl iletilir

@{ 
    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; 
    } 

Bu yüzden javascript'i ayrı bir dosyaya koymak ve bu dosyayı benim görünümüme göndermek istiyorum, ve sorun ne zaman jiletden javascript'e kadar değerleri aktarabilirim javascript ayrı bir dosyada mı?

cevap

7

JavaScript derleyici tarafından çözümlenen olmadan dosyalardır, bu nedenle

Eğer bununla yapabilecekleriniz 210

örneğin bir dinamik javascript kullanmaktır:

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

yazan bir rota var:

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

sizin Kontrolcü oluşturma ve kullanma basit return View();

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

    // pass any Model you want 

    return View(); 
} 
gibi

Bu görünümde, javascript'inizi Razor sözdizimi ile belirtin.


Yoksa değişkenler kullanmak ve onları yükleyebilirsiniz sizin _Layout.cshtml dosyasında RenderSection()

kullanılması başka herhangi bir 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> 

önce ve herhangi View yılında senin <head> bir bölüm eklemek yapmak Bu değişkenleri eklemek istediğinizde, aşağıdakileri yapın:

@Section script_variables { 

    <script type="text/javascript"> 

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

    </script> 

} 

Ve betiği yüklediğiniz diğer tüm dosyalar, bu tür bir koda sahip olacak ...

1

Sen

Sen .js dosya içinde bir işlevi çağırmak ve bağımsız değişkenler olarak veri gönderebilir sayfanızda bazı js-değişkenleri bildirmek ve daha sonra .js-dosyasından bu değişkenleri kullanabilir

... hiç şansın yok, (bir nesne oluşturmayı düşünün ve birden çok değişkeni yaratma sizin verilerle yerine doldurunuz. Lütfen)

+0

Biraz daha ayrıntılı bilgi verebilir misiniz? – Joper

İlgili konular