2011-10-20 18 views
7

Oto mój kod jQuery z Razor:Czy istnieje sposób użycia kodu jquery wewnątrz brzytwy?

$("#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 }') 

Chcę połączyć je ze sobą, jak w nie chcę zadzwonić do ViewData["Gruplar"] dwukrotnie.

Czy mogę zrobić coś takiego?

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

Próbowałem wszystkiego, co mogę wymyślić, ale nadal nie mogę osiągnąć tego, co chcę.

+0

Twój kod jest trochę zagmatwany, ponieważ twoje wartości w obu przykładach będą dziwne. W pierwszym przykładzie po prostu wypisujesz wszystkie wartości z listy do atrybutu elementu "value" w drugim przykładzie, ustawiasz wszystkie wartości pojedynczo, ale zawsze będzie to ostatnia ustawiona wartość. Co dokładnie próbujesz osiągnąć? – Buildstarted

+0

@BuildUruchomiona ta lista wyboru zawiera tylko 1 pozycję ... więc nie zostanie nadpisana. Przeczytaj uważnie ten temat. Chcę się nauczyć, czy mogę umieścić kod jquery wewnątrz '' to jest mój problem do rozwiązania. Ta lista wyboru jest tylko przykładem użycia. –

Odpowiedz

9

czytam go i zrozumieć, co chcesz zrobić. Jednak twój przykład jest mylący. (wydaje się, że wszyscy odpowiedzieli)

To, co zrobiłeś w drugim przykładzie, powinno działać dobrze, możesz owinąć swój jQuery w element <text></text>, jeśli to również pomaga. Jeśli istnieje tylko jedna wartość, można uzyskać tylko jedną z wielu możliwości wykonania brzytwy w jquery. Jest w zasadzie taki sam jak brzytwa z html.

Jeśli chcesz wykonać maszynę po stronie klienta, to się nie stanie. Maszynka do golenia jest wykonywana, zanim zostanie wysłana do klienta.

5

Kod proponujesz powinno działać, poniższy kod wykorzystuje tablicę ciągów zamiast SelectList ale zasada powinna być taka sama, poniższy kod został przetestowany i działa -

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

Nie sądzę, że chciał nadpisać 'value'atrybut dla # # GroupC_grup_name' X liczba razy. – jgauffin

+0

przede wszystkim nie będę nadpisywać akcji, które zamierzam zrobić! Również moja lista wyboru tylko do przenoszenia wartości danych i pól tekstowych oddzielnie, jest to lista ** tak **, ale zawiera tylko ** 1 ** pozycję. Tak więc próbowałem wstrzykiwać '' kod jquery' 'wewnątrz' brzytwy' i dziękuję '@ ipr101' jego pracy z' tablicą ciągów' z pewnym nadpisaniem, ponieważ '@ jgauffin' powiedział, że nadpisuje! więc powinno to być podobne ('@ sel.Value' do' GroupC_id' i '@ sel.Text' do' GroupC_grup_name') także, jeśli możesz pokazać sposób na zrobienie tego za pomocą nośnika danych takiego jak 'ViewData [" Gruplar "] 'chciałbym to wiedzieć. Kod –

1

Jak rozumiem chcesz zaktualizować elementy po wybraniu elementu SELECT?

Tworzenie regularnej listy select i dodaj następujący kod jquery:

<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

jest godny, ale to nie jest mój problem! umm Myślę, że jestem niezrozumiany. selectlist nie ma nic wspólnego, ale uzyskanie moich wartości tutaj .. próbuję dodać kod jquery wewnątrz brzytwa to mój problem jest tam sposób to zrobić?nie jest to ważne, jeśli używam listy wyboru lub modelu do pobierania niektórych danych. –

+0

Bardzo ważne jest, aby wiedzieć, co chcesz zrobić, ponieważ kod brzytwy jest uruchamiany na serwerze internetowym, a kod jQuery jest uruchamiany w przeglądarce internetowej. nie mogą ze sobą współpracować. Razor może generować tylko kod jQuery (który później będzie uruchamiany w przeglądarce) – jgauffin

Powiązane problemy