2011-08-02 15 views
5

Muszę otworzyć nowe wyskakujące okno po kliknięciu przycisku w widoku. Nowe okno powinno być przekierowane do określonego sposobu działania w określonym kontrolerze. Muszę również podać atrybuty rozmiaru nowego wyskakującego okienka. staram następujący kod:MVC 3 Razor PopUp Window

<input type="button" name = "ClickMe" Value="ClickMe" onclick= "javascript:window.open('/Home/Create/','Customer Search',height='window.screen.height - 100', width='200',left='window.screen.width - 250' ,top='10',status='no',toobar='no',resizable='yes',scrollbars='yes')"/> 

Na kliknięcie przycisku, nic się nie dzieje. Dostaję następujący błąd javascript:

Line: 19
Char: 1
Error: Invalid argument.
Code: 0

Kiedy sprawdzić viewsource z HTML renderowane, znajdę linię być ten, który jest świadczenie przycisk. Używam Windows Vista z IE 7. Pracuję nad MVC 3 Razor silnika z VS 2010

Odpowiedz

13

Respect html. Szacuj javascript. Poszanuj ramy, nad którymi piszesz, które wprowadziły dwie duże zmiany (walidacja i ajaxity) od drugiej wersji do trzeciej, aby zastosować nowszą, nowoczesną zasadę - Unobtrusive Javascript. Możesz poprawić ten błąd w krótszym czasie, który spędziłeś na zadawaniu pytań tutaj, jeśli zastosowałeś się do tej zasady (przy pomocy podświetlania syntaksonu javascript).

<input type="button" id="ClickMe" name = "ClickMe" Value="ClickMe" /> 
... 
    <script type="text/javascript"> 
      $(function() { 
       $('#ClickMe').click(function() { 
        window.open('/Home/Create/', 'CustomerSearch', 'height=' + (window.screen.height - 100) + ',width=200,left=' + (window.screen.width - 250) + ',top=10,status=no,toolbar=no,resizable=yes,scrollbars=yes'); 
       }); 
      }); 
    </script> 

I jak odkryłem, problem dotyczy miejsca w nazwie okna w IE - "Wyszukiwarka klienta". Jeśli usuniesz to miejsce - "CustomerSearch", zacznie ono działać również w IE:

+0

Dzięki za szybką odpowiedź. Ale problem utrzymuje się. – Vipul

+0

Zobacz moją zaktualizowaną odpowiedź – archil

5

HTML warunkiem ma jakieś dziwactwa dotyczące ' znaków w onclick. Spróbuj i edytować do następujących (wierszami dodana dla czytelności):

<input type="button" 
     name="ClickMe" 
     value="ClickMe" 
     onclick="javascript:window.open('/Home/Create/', 
             'Customer Search', 
             'height=' + (window.screen.height - 100) + ',width=200,left=' + (window.screen.width - 250) + ',top=10,status=no,toolbar=no,resizable=yes,scrollbars=yes');"/> 

Ważniejsze zmiany:

  • trzeci argument window.open() jest jeden ciąg JavaScript wartościami z obliczeń wstawionych
  • Argumenty w ciągu ciągu konfiguracji usunięto '
  • toobartoolbar.

podstawie archil's update wydaje się, że ma trafić w sedno:

var windowObjectReference = window.open(strUrl, strWindowName[, strWindowFeatures]); 

strWindowName
This is the string that just names the new window. Such string can be used to be the target of links and forms when the target attribute of an <a> element or of a <form> is specified. This string parameter should not contain any blank space. strWindowName does not specify the title of the new window. (source)

+0

Dzięki za szybką odpowiedź. Nienawidzę tego mówić, ale jednego "" "brakuje natychmiast po" scrollbars = yes ". Nawet po naprawie problem nadal występuje. Jakieś inne sugestie? – Vipul

+0

@Vipul Ouh, masz rację. Naprawiono to teraz, ale uważam, że archil trafił w gwóźdź z nazwą okna ('CustomerSearch'), zob. ['window.open' na MDN] (https://developer.mozilla.org/en/DOM/window.open):" Ten parametr łańcucha nie powinien zawierać spacji. " – jensgram

+0

Dzięki. Teraz pamiętam coś, co zrobiłem 2 lata temu, kiedy nazwa okna musiała zostać podana, aby otworzyć nowe okno. – Vipul

0
<script type="text/javascript"> 
    //script for loading value to division 
    $(function() { 
     $('form').submit(function() { 
      $.ajax({ 
       url: this.action, //you can redirect to your specific controller here.. 
       type: this.method, 
       data: $(this).serialize(), 
       success: function (result) { 
        $('#popUp').html(result); 
       } 
      }); 
      return false; 
     }); 
    }); 
</script> 

<script type="text/javascript"> 
    //Script for pop up dialog. 
    $(function() { 
     $('form').submit(function() { 
      $("#popUp").dialog({ 
       modal: true, 
       resizable: false 
      }); 
     }); 
    }); 
</script> 

<div id="popUp" > 
</div> 
Powiązane problemy