2012-08-27 39 views
5

tôi có một cái nhìn cục bộ mà tôi đang kêu gọi trên các trang như sau: -đi qua một biến từ dao cạo cshtml để jquery

@Html.Partial("~/Views/Shared/ImageGallery.cshtml", Model) 

Mã cho Jquery thực tế của trang này là như sau: -

<script type="text/javascript"> 
    $(document).ready(function() { 

     $('.modal_block').click(function (e) { 
      $('#tn_select').empty(); 
      $('.modal_part').hide(); 
     }); 

     $('#modal_link').click(function (e) { 
      $('.modal_part').show(); 
      var context = $('#tn_select').load('/Upload/UploadImage?Page=Article&Action=Edit&id=16', function() { 
       initSelect(context); 
      }); 
      e.preventDefault(); 
      return false; 
     }); 

    }); 
</script> 

Bây giờ làm việc này một cách hoàn hảo, tuy nhiên tôi cần phải tìm một cách để vượt qua vars động thay vì vars mã hóa cứng như thế này: -

Upload/UploadImage?Page=Article&Action=Edit&id=16 

Trong mô hình tôi có tất cả các vars, tuy nhiên tôi không biết làm thế nào tôi có thể chèn chúng vào Jquery. Bất kỳ trợ giúp sẽ được rất nhiều đánh giá cao!

--------- CẬP NHẬT -----------------------

Đây là mã tôi đưa vào mỗi cshtml cần có ImageGallery.

</div> 
    @Html.HiddenFor(model => model.PageViewModel.Page.PageTitle, new { id = "PageTitle"}); 
    @Html.HiddenFor(model => model.PageViewModel.Page.PageAction, new { id = "PageAction"}); 
    @Html.HiddenFor(model => model.ArticleViewModel.Article.ArticleID, new { id = "ArticleID"}); 
<div> 
    @Html.Partial("~/Views/Shared/ImageGallery.cshtml", Model) 
</div> 

New Javascript trong ImageGallery: -

<script type="text/javascript"> 

    var pageTitle = $('#PageTitle').val(); 
    var pageAction = $('#PageAction').val(); 
    var id = $('#ArticleID').val(); 
    $(document).ready(function() { 
     $('.modal_block').click(function (e) { 
      $('#tn_select').empty(); 
      $('.modal_part').hide(); 
     }); 
     $('#modal_link').click(function (e) { 
      $('.modal_part').show(); 
      var context = $('#tn_select').load('/Upload/UploadImage?Page=' + pageTitle + '&Action=' + pageAction + '&id=' + id, function() { 
       initSelect(context); 
      }); 
      e.preventDefault(); 
      return false; 
     }); 
    }); 

</script> 

này hoạt động tốt tại

Trả lời

18

Bạn có thể thêm lĩnh vực ẩn để xem bạn và ràng buộc dữ liệu hình thành mô hình. Sau đó, bạn có thể dễ dàng đọc giá trị này từ jQuery.

Xem:

@Html.HiddenFor(model => model.Id, new { id = "FieldId"}); 

Script:

var id= $('#FieldId').val(); 

Ngoài ra bạn có thể đặt này hiddens vào xem một phần của bạn. Nếu chế độ xem một phần của bạn không bị thay đổi mạnh, hãy ẩn HiddenFor thành Hidden. Chế độ xem một phần của ImageGallery của bạn phải chứa div sau đây:

</div> 
    @Html.Hidden("PageTitle", Model.PageViewModel.Page.PageTitle); 
    @Html.Hidden("PageAction", Model.PageViewModel.Page.PageAction); 
    @Html.Hidden("ArticleID", Model.ArticleViewModel.Article.ArticleID); 
<div> 

Trong trường hợp này, bạn không cần đặt hiddens vào mọi cshtml cần có ImageGallery.

+0

Artem, bạn có thể cho tôi một ví dụ về mã không? – Johann

+0

Xem bài đăng cập nhật. –

+0

ok công trình này, trước khi tôi chấp nhận nó như là một câu trả lời, là nó có thể thay vì đi qua nó như là ẩn vars, đi qua nó từ đây? ------- @ Html.Partial ("~/Views/Shared/ImageGallery.cshtml", Model) – Johann

2

Bạn có thể thiết lĩnh vực ẩn hoặc chỉ cần khai báo biến javascript và thiết lập giá trị của họ từ một trong hai mô hình của bạn hoặc Viewbag, giống như:

var action = @Model.action; 

hoặc

var id = @ViewBag.id; 

và bạn chỉ có thể sử dụng trong mã của bạn

<script type="text/javascript"> 

var action = @Model.action; 
var id = @ViewBag.id; 
$(document).ready(function() { 

$('.modal_block').click(function (e) { 
    $('#tn_select').empty(); 
    $('.modal_part').hide(); 
}); 
$('#modal_link').click(function (e) { 
    $('.modal_part').show(); 
    var urlToLoad = "/Upload/UploadImage?Page=Article&Action=" + action + "&id=" + id; 
    var context = $('#tn_select').load(urlToLoad, function() { 
     initSelect(context); 
    }); 
    e.preventDefault(); 
    return false; 
}); 

});

+0

Tôi đã thử ví dụ của bạn GR7 ----- var page = @ Model.PageViewModel.Page.PageTitle; ------ nhưng tôi nhận được "tham chiếu đối tượng không được thiết lập để một trường hợp của một đối tượng" lỗi – Johann

+0

bạn có thể dán thêm một chút mã của bạn Johann? là bạn thiết lập các biến javascript để các thuộc tính thực sự của mô hình của bạn hoặc Viewbag? – GR7

+0

Xin chào GR7, tôi đã cập nhật mã của mình bằng một giải pháp đang hoạt động, tôi thích giải pháp của Artem, tôi chỉ cần tìm cách để làm cho nó hơi "sạch hơn". – Johann

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