2011-10-20 33 views
7

Đây là mã jQuery của tôi với Razor:Có cách nào để sử dụng mã jquery bên trong dao cạo?

$("#GroupC_grup_name").attr('value', '@foreach (SelectListItem sel in (SelectList)ViewData["Gruplar"]){ @sel.Text }') 
    $("#GroupC_id").attr('value', '@foreach(SelectListItem sel in (SelectList)ViewData["Gruplar"]){ @sel.Value }') 

Tôi muốn kết hợp này lại với nhau, như trong Tôi không muốn gọi cho ViewData["Gruplar"] hai lần.

Tôi có thể làm điều gì đó như thế này không?

@foreach(SelectListItem sel in (SelectList)ViewData["Gruplar"]){ 
    @:$("#GroupC_grup_name").attr('value', '@sel.Text'); 
    @:$("#GroupC_id").attr('value', '@sel.Value'); 
} 

Tôi đã thử mọi thứ tôi có thể nghĩ nhưng vẫn không thể đạt được những gì tôi muốn.

+0

Mã của bạn hơi khó hiểu vì giá trị của bạn trong cả hai ví dụ sẽ rất lạ. Trong ví dụ đầu tiên bạn chỉ cần xuất tất cả các giá trị từ danh sách vào thuộc tính phần tử 'value' trong ví dụ thứ hai, bạn sẽ đặt tất cả các giá trị tại một thời điểm nhưng nó sẽ luôn là giá trị cuối cùng được đặt. Bạn đang cố gắng hoàn thành chính xác điều gì? – Buildstarted

+0

@BuildStarted danh sách chọn này chỉ chứa 1 mục .. để nó không bị ghi đè. Vui lòng đọc kỹ chủ đề. Tôi muốn tìm hiểu nếu tôi có thể đặt một số mã jquery bên trong '' đó là vấn đề của tôi để giải quyết. Danh sách lựa chọn đó chỉ là một ví dụ về cách sử dụng. –

Trả lời

9

tôi đọc nó một cách cẩn thận và hiểu những gì bạn muốn làm. Tuy nhiên, ví dụ của bạn là điều khó hiểu. (dường như tất cả mọi người đã trả lời)

Những gì bạn đã làm trong ví dụ thứ hai sẽ hoạt động tốt, bạn có thể bọc jQuery của mình trong một phần tử <text></text> nếu điều đó cũng hữu ích. Nếu chỉ có bao giờ một giá trị mà bạn có thể chỉ

<script type='text/javascript'> 
    @{ var x = ((SelectList)ViewData["Gruplar"]).First(); } 
    $("#GroupC_grup_name").attr('value', '@x.Text'); 
    $("#GroupC_id").attr('value', '@x.Value'); 
</script> 

Có nhiều cách bạn có thể thực hiện dao cạo trong jquery. Về cơ bản nó giống như dao cạo với html.

Bạn muốn thực hiện dao cạo ở phía máy khách thì điều đó sẽ không xảy ra. Dao cạo được thực hiện trước khi nó được gửi đến máy khách.

5

Mã bạn đề nghị nên làm việc, mã dưới đây sử dụng một mảng chuỗi thay vì một SelectList nhưng nguyên tắc nên được như vậy, các mã dưới đây đã được thử nghiệm và làm việc -

@{String[] testarr = {"hello","bye"};} 
@foreach(String sel in testarr){ 
@:$("#GroupC_grup_name").attr('value', '@sel'); 
@:$("#GroupC_id").attr('value', '@sel'); 
} 
+0

Tôi không nghĩ rằng anh ấy muốn ghi đè lên 'giá trị'cho thuộc tính của số lần' # GroupC_grup_name' lần .. – jgauffin

+0

trước hết tôi sẽ không ghi đè lên hành động mà im sẽ làm! Ngoài ra danh sách lựa chọn của tôi chỉ để thực hiện giá trị dữ liệu và các trường văn bản một cách riêng biệt, một danh sách ** có ** nhưng nó chỉ chứa ** 1 ** mục. Vì vậy, những gì tôi đã cố gắng được tiêm một số 'jquery code' bên trong' razor' và nhờ '@ ipr101' làm việc của nó với một' chuỗi mảng' với một số ghi đè như '@ jgauffin' cho biết nó ghi đè! vì vậy nó sẽ giống như ('@ sel.Value' thành' GroupC_id' và '@ sel.Text' thành' GroupC_grup_name') nếu u có thể hiển thị một cách để làm điều đó với một nhà cung cấp dữ liệu như 'ViewData [" Gruplar "] Tôi muốn biết điều đó. –

1

Theo tôi được biết nó, bạn muốn cập nhật các phần tử khi chọn một mục SELECT?

Tạo chọn danh sách thường xuyên và thêm mã jquery sau:

<script type="text/javascript"> 
$(function() { 
    $('#selectListId').change(function() { 
     $selectedItem = $("option:selected", this); 
     $("#GroupC_grup_name").val(selectedItem.html()); 
     $("#GroupC_id").val(selectedItem.val()); 
    }); 

}); 
</script> 
+0

mã ur xứng đáng nhưng đây không phải là vấn đề của tôi! umm tôi nghĩ rằng im bị hiểu lầm. danh sách lựa chọn không có gì để làm nhưng nhận được giá trị của tôi ở đây .. im cố gắng để thêm mã jquery bên trong dao cạo thats vấn đề của tôi là có một cách để làm điều đó?nó không quan trọng nếu tôi sử dụng một danh sách lựa chọn hoặc một mô hình để lấy lại một số dữ liệu. –

+0

Điều rất quan trọng là phải biết bạn muốn làm gì vì mã Razor được chạy trong máy chủ web và mã jQuery được chạy trong trình duyệt web. họ không thể làm việc cùng nhau. Dao cạo chỉ có thể tạo mã jQuery (mà sau này sẽ được chạy trong trình duyệt) – jgauffin

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