2011-08-21 32 views
5

Nếu tôi có như vậy javascript trong dao cạo veiw tôi:Làm thế nào để vượt qua các thông số để tham chiếu tập tin javascript khỏi tầm nhìn dao cạo

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

Vì vậy, tôi muốn đặt javascript trong tập tin riêng biệt và tham chiếu tập tin vào quan điểm của tôi, và vấn đề là làm thế nào tôi có thể vượt qua các giá trị từ dao cạo để javascript khi javascript trong tập tin riêng biệt?

Trả lời

7

Javascript là các tập tin mà không bị phân tách bởi trình biên dịch, vì vậy, bạn không có cơ hội ...

gì bạn có thể làm tuy nhiên là sử dụng một javascript động, ví dụ:

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

Có một con đường mà nói:

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

Tạo khiển của bạn và sử dụng đơn giản return View(); như

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

    // pass any Model you want 

    return View(); 
} 

Trong chế độ xem đó, chỉ cần đặt javascript của bạn với cú pháp dao động .


Hoặc bạn có thể sử dụng các biến và tải chúng lên làm cho việc sử dụng các RenderSection()

trong tập tin _Layout.cshtml bạn thêm một phần trong <head> của bạn trước khi bất kỳ khác 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> 

và trong bất kỳ View bạn muốn thêm các biến như vậy, chỉ cần thực hiện:

@Section script_variables { 

    <script type="text/javascript"> 

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

    </script> 

} 

Và tất cả các tệp khác mà bạn tải tập lệnh sẽ có mã như vậy ...

1

Bạn có thể khai báo một số js-biến trên trang của bạn và sau đó sử dụng các biến từ .js file

Bạn có thể gọi một hàm bên trong .js-file của bạn và gửi dữ liệu của bạn như các đối số

(Xin vui lòng xem xét việc tạo một đối tượng và điền với dữ liệu của bạn thay vì tạo ra nhiều biến.)

+0

bạn có thể cung cấp thêm một chút chi tiết không? – Joper

Các vấn đề liên quan