2009-09-18 10 views
5

Używam tego kodu JavaScript wewnątrz tagu head, aby zapełnić divs przyciskiem przeglądania, aby użytkownicy mogli przesyłać obrazy (swfupload).Wykonanie JavaScript w częściowym widoku w ASP.NET MVC

<head> 
... 
<script type="text/javascript"> 
    var swfu = function() { 
     return new SWFUpload({ 
      // Backend Settings 
      // settings go here... 
      // Too long to display here 
      // Debug Settings 
      debug: false 
     }); 
    } 
    window.onload = swfu; 
</script> 
</head> 

....

<div id="swfu_container" style="margin: 0px 10px;"> 
    <div> 
    <span id="spanButtonPlaceholder"></span> 
</div> 
<div id="divFileProgressContainer" style="height: 75px;"></div> 
<div id="thumbnails"></div> 
</div> 

Działa to dobrze, ale problem jest gdy próbuję umieścić ten kod wewnątrz częściowego widzenia. Do tej pory nie mogłem tego zrobić.

Czy jest ktoś bardziej doświadczony na ratunek?

Dziękuję

+2

Czego spróbować umieścić na częściowe? Druga połowa HTML (wszystko wewnątrz "swfu_container")? –

+1

Piszę window.onload = swfu (w skrypcie, wewnątrz tagu head), aby uzyskać wszystko wewnątrz "swfu_container" (część, która jest w częściowym). Wydaje mi się, że problem polega na tym, że po załadowaniu strony nie ma jeszcze częściowego! Sądzę, że rozwiązanie polega na tym, że skrypt zostanie uruchomiony tylko po załadowaniu częściowego. Dzięki! –

+0

Ale jak możemy to zrobić? ... –

Odpowiedz

3

Możesz umieścić swoją funkcję tak:

<%= Ajax.ActionLink("YourAction",new AjaxOptions{ OnSuccess="swfu", UpdateTargetId = "spanButtonPlaceholder" }) %> 

więc swoją funkcję swfu zostanie wywołana, jeśli zmiana jest udana

+1

Przepraszamy za opóźnienie, twoja odpowiedź rozwiązała ten problem. Dzięki, Gregoire! –

2

Punktem window.onload jest do wykonania danej funkcji, gdy strona skończy ... ładowanie. Powiedział, że powinieneś rozważyć przeniesienie obciążenia na dno ciała. I nie jestem największym fanem świata w utrzymywaniu scenariuszy w głowie. :)

+0

Widzę twój punkt o utrzymywaniu skryptu w dolnej części ciała. Problem polega na tym, że częściowe ładowanie jest wykonywane tylko po wykonaniu przez użytkownika jakiegoś działania. Tak więc, ładowanie w głowie lub na dnie ciała, nie działa. Próbowałem umieścić ten kod (zarówno skrypt, jak i HTML) w samym częściowym, ale to nie działa. Potrzebuję skryptu, aby uruchomić i zapełnić divy tylko wtedy, gdy częściowe pojawią się na ekranie. Jak to robimy? –

1

Częściowe widoki są renderowane za pomocą Microsoft Ajax, który nie ocenia kodu JavaScript. Sugerowałabym, aby nie używać częściowych widoków w tym przypadku lub spojrzeć na inne silniki widokowe, takie jak Spark .... lub umieścić wszystkie wymagane javascript w widoku rodzica, co powoduje, że twój kod jest nieco niechlujny.

Powiązane problemy