2013-03-28 11 views
8

Nawiązując do Link, utworzyłem okno dialogowe interfejsu z MVC.
Oto mój kod:
W Layout.cshtmlObiekt nie obsługuje okna dialogowego właściwości lub metody

<head> 
     <meta charset="utf-8" /> 
     <title>@ViewBag.Title - My ASP.NET MVC Application</title> 
     <link href="../../Content/smoothness/jquery-ui-1.10.2.custom.css" rel="stylesheet" type="text/css" /> 
     <script src="../../Scripts/jquery-1.9.1.js" type="text/javascript"></script> 
     <script src="../../Scripts/jquery-ui-1.10.2.custom.min.js" type="text/javascript"></script> 
     <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" /> 
     <meta name="viewport" content="width=device-width" /> 
     @Styles.Render("~/Content/css") 
     @Scripts.Render("~/bundles/modernizr") 
    </head> 

Index.cshtml

<h2>jQuery UI Hello World</h2>   
    <button id="show-dialog">Click to see jQuery UI in Action</button>    
    <div id="dialog" title="jQuery UI in ASP.NET MVC" > 
     <p>You now have the power of ASP.NET, the simplicity of client-side scripting with jQuery, and the looks of jQuery UI. Congrats, web slinger!</p> 
    </div>  
    <script language="javascript" type="text/javascript"> 
     $(function() { 
      $('#dialog').dialog({ 
       autoOpen: false, 
       width: 600, 
       buttons: { 
        "Ok": function() { $(this).dialog("close"); }, 
        "Cancel": function() { $(this).dialog("close"); } 
       } 
      }); 
      $("#show-dialog").button().click(function() { 
       $('#dialog').dialog('open'); 
       return false; 
      }); 
     }); 
    </script>  

Sprawdziłem zarówno w IE i Firefox. Firefox wyrzuca "Okno dialogowe Typeerror $ (...)." Nie jest funkcją " i IE rzuca Obiekt nie obsługuje" dialogu "właściwości lub metody.
Wszelkie sugestie. Co to jest błąd w moim kodzie. Dlaczego pojawia się błąd dialogowy?

+1

Dlaczego twój "Index.cshtml' używa składni WebForms? To, co pokazałeś, to nieprawidłowy widok maszynki. –

+0

Tak. masz rację. Pls Sprawdź moją edycję. – kk1076

Odpowiedz

14

3 rzeczy przychodzą do głowy, że być może warto sprawdzić:

  1. Nigdy hardcode adresów URL w aplikacji ASP.NET MVC. Zawsze należy używać pomocników (lub pakiety, które są zalecane):

    <head> 
        <meta charset="utf-8" /> 
        <title>@ViewBag.Title - My ASP.NET MVC Application</title> 
        <link href="~/Content/smoothness/jquery-ui-1.10.2.custom.css" rel="stylesheet" type="text/css" /> 
        <script src="~/Scripts/jquery-1.9.1.js" type="text/javascript"></script> 
        <script src="~/Scripts/jquery-ui-1.10.2.custom.min.js" type="text/javascript"></script> 
        <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" /> 
        <meta name="viewport" content="width=device-width" /> 
        @Styles.Render("~/Content/css") 
        @Scripts.Render("~/bundles/modernizr") 
    </head> 
    
  2. Upewnij się, że w końcu _Layout.cshtml nie mają @Scripts.Render("~/bundles/jquery") połączenia, ponieważ będzie to obejmować jQuery dwukrotnie.

  3. Jeśli na końcu _Layout.cshtml masz dedykowaną sekcję dla niestandardowych skryptów takich jak @RenderSection("scripts", required: false), upewnij się, że masz umieszczony niestandardowy skrypt w tej sekcji (zauważ, że od tego RenderSection jest na koniec DOM don „t muszą być owijania skrypt w document.ready imprezy ponieważ w momencie jego wykonywania, DOM będzie już załadowany):

    <h2>jQuery UI Hello World</h2>   
    <button id="show-dialog">Click to see jQuery UI in Action</button>    
    <div id="dialog" title="jQuery UI in ASP.NET MVC" > 
        <p>You now have the power of ASP.NET, the simplicity of client-side scripting with jQuery, and the looks of jQuery UI. Congrats, web slinger!</p> 
    </div>  
    
    @section scripts { 
        <script type="text/javascript"> 
         $('#dialog').dialog({ 
          autoOpen: false, 
          width: 600, 
          buttons: { 
           "Ok": function() { $(this).dialog("close"); }, 
           "Cancel": function() { $(this).dialog("close"); } 
          } 
         }); 
         $("#show-dialog").button().click(function() { 
          $('#dialog').dialog('open'); 
          return false; 
         }); 
        }); 
        </script> 
    } 
    
+0

Superb.To działa fajnie ... Wielkie dzięki .. – kk1076

+0

@PankajGarg, zaktualizowałem odpowiedź, aby można było wycofać downthote. –

+0

Miałem ten problem i stwierdziłem, że zostawiłem niektóre znaczniki "

0

Twój kod wydaje mi się OK. Można sprawdzić, czy niestandardowy interfejs użytkownika jQuery zawiera funkcję dialogową (lub spróbuj pobrać full jQuery UI dla celów testowych) i sprawdzić, czy identyfikator URI skryptu JS jest poprawny.

7

W moim przypadku to był błąd, bo zapomniał Aby dodać odwołanie do pliku jquery-ui:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js" type="text/javascript"></script> 
1

Zwykle dzieje się tak, gdy zapomnisz dodać jquery-ui.js. Kolejność dołączania jquery-ui-{version}.js również ma znaczenie!

Powinieneś dołączyć jquery-{version}.js następnie jquery-ui-{version}.js. Następnie tuż przed tagiem </body> umieść niestandardowy plik javascript.

To rozwiąże błąd runtime javascript: [Obiekt nie obsługuje właściwości lub metody 'dialogowe'], ['$' jest niezdefiniowana]

+0

Dzięki za wskazanie ważności zamówienia - to właśnie naprawiło mój problem. – EJoshuaS

0

zawierać te trzy wiersze kodu:

<link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css" /> 
<script src="//code.jquery.com/jquery-1.10.2.js" type="text/javascript"></script> 
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js" type="text/javascript"></script> 
Powiązane problemy