2016-09-23 2 views
0

ich meine Anwendungen geändert, so eine andere Seite geladen werden würde, wenn lief aber jetzt bekomme ich die FehlerSeitenreihenfolge geändert und jetzt getContext ist Null

Unable Eigenschaft ‚getContext‘ undefinierten oder NULL-Verweis erhalten

Es verursacht noch keine Probleme, aber ich hoffe, es vorher zu beheben.

Wenn Sie online suchen, geschieht dies normalerweise, wenn ein <canvas>-Tag vor einem <script>-Tag steht, aber ich kann nicht finden, wo dies vorkommt.

@using Application.Models; 
@using Newtonsoft.Json; 
@{ 
    User user = ViewBag.User; 
} 

@if (ViewBag.Loader) 
{ 
    <!DOCTYPE html> 
    <html lang="en"> 
     <head> 
      <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
      <meta charset="utf-8" /> 
      <meta name="viewport" content="width=device-width" /> 
      <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" /> 
      <title>@ViewBag.Title - Application Title</title> 
      <script id="userData" class="userData" type="application/json" data-accurate-up-to="@user.AccurateUpTo"> 
       @Html.Raw(JsonConvert.SerializeObject(user, Newtonsoft.Json.Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore })) 
      </script> 

      @Styles.Render("~/Styles/lib") 
      @Styles.Render("~/Styles/css") 
      @Scripts.Render("~/Scripts/lib") 

     </head> 
     <body> 
     <!-- Navbar --> 
      <div id="nav"> 
       <div id="smallLogoHolder"> 
        <img id="smallLogo" src="~/Images/sidewaysLogo.png" /> 
       </div> 
       <div id="navContents"> 
        <div id="logoHolder"> 
         <img id="logo" src="~/Images/logo.png"> 
         <div id="slogan">Application Name<div id="dayOTheYear"></div></div> 
         <script> 
          setInterval(function() { 
           $("#dayOTheYear").text("(Day: " + moment().dayOfYear() + ")"); 
          }, 1000 * 10); 
          $("#dayOTheYear").text("(Day: " + moment().dayOfYear() + ")"); 
         </script> 
        </div> 

        <ul id="menu"> 
         <a href="~/Page 1"><li class="navItem @if (ViewBag.Title == "Page 1") { @("activeNavItem"); }">Page 1</li></a> 
         <a href="~/Page 2"><li class="navItem @if (ViewBag.Title == "Page 2") { @("activeNavItem"); }">Page 2</li></a> 
         <a href="~/Page 3"><li class="navItem @if (ViewBag.Title == "Page 3") { @("activeNavItem") ; }">Page 3</li></a> 
         <a href="~/Page 4"><li class="navItem @if (ViewBag.Title == "Page 4") { @("activeNavItem") ; }">Page 4</li></a> 
        </ul> 

        <div id="userSection"> 
         <div id="loginSection"> 
          <div id="loginSectionPic" style="background-image: url(@("path" + User.Identity.Name.Replace("DOMAIN","").Replace("/","").Replace("\\","")))"></div> 

          <div id="loginSectionContent"> 
           <span id="user">@User.Identity.Name.Replace(@"DOMAIN\", "")</span> 
           <span id="userType"> 
            @if (user.SecurityGroup.Name != "N/A") 
            { 
             @("(" + user.SecurityGroup.Name + ")") 
            } 
            else 
            { 
             @("(No Role)") 
            } 
           </span> 

          <div><span id="switchUserButton">Switch User</span> | <span id="logoutButton">Logout</span></div> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div>  

     <div class="dialog notificationDialog"> 
      <h2 class="dialogHeader">My Title</h2> 
      <div class="notificationMeta">Sent by <span class="notificationSubmittedBy"></span><br /><span class="notificationSubmittedTime"></span></div> 
      <div class="notificationText"> 

      </div> 
      <input type="button" class="markRead" value="Mark As Read" /> 
      <input type="button" class="closeNotification" value="Close" /> 
     </div> 

     @RenderBody() 

     <div id="content"> 
      <span id="loadingMessage">Loading...</span> <img id="dataLoadingGif" src="~/Images/loader.gif" /> 

      <script> 
       $(window).load(function() { 
        $.get("@Request.Url.ToString()?loader=0", function (markup) { 
         $("#loadingMessage").text("Rendering..."); 
         setTimeout(function() { 
          $("#content").html(markup); 
         }, 200); 

        }).fail(function (response) { 
         console.log(response); 
         $("#loadingMessage").html("<span style='color:red'>Failed</span><br/><br/>"); 
         $("#dataLoadingGif").remove(); 

         $("#content").append('<iframe id="yellowScreenOfDeathHolder" style="display:block; width:100%; height: 1000px;"></iframe>'); 

         $("#yellowScreenOfDeathHolder").contents().find("html").html(response.responseText); 
        }) 
       }); 
      </script> 
     </div> 
    </body> 
</html> 
} 
else 
{ 
<div id="title"> 
    @ViewBag.Title 

    @if (ViewBag.Title == "Page 2" || ViewBag.Title == "Page 3") 
    { 
     <span class="areaTitle"> - All Areas</span> 
    } 
    else if(ViewBag.Title == "Page 1" || ViewBag.Title == "Page 4") 
    { 
     if (((User)ViewBag.User).Area != null) 
     { 
      <span class="areaTitle"> - @(((User)ViewBag.User).Area.Name)</span> 
     } 
     else 
     { 
      <span class="areaTitle"> - All Areas</span> 
     }  
    } 
</div> 
@RenderBody() 

@Scripts.Render("~/Scripts/app") 

}

Das ist mein Layout.cshtml und wir haben hier nichts geändert wurde, alles, was ich tat, war einige Informationen ändern in meinem RouteConfig.cs auf eine andere Seite zu gehen. Der Grund, warum ich Layout.cshtml verknüpft ist, weil, wenn das Programm lief es durch Laden bekommt Layout.cshtml und sagt mir dann ist .getContext null innerhalb des jquery

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

routes.MapRoute(
    name: "Default", 
    url: "{action}/{id}", 
    defaults: new { controller = "Home", action = "Page 2", id = UrlParameter.Optional } 

Alles, was hier geändert wurde Page 2 verwendet Page 1 sein, könnten die <canvas> Elemente auf Page 1 verursacht die Probleme?

Update:

Nach einem weiteren Untersuchung der Fehler zurückgibt auf der @Scripts.Render("~/Scripts/app") Linie so frage ich mich, ob dieses Skript sollte an anderer Stelle genannt werden. Wo wäre ein besserer Ort, um es zu nennen?

Antwort

0

Ich denke, ich habe die Lösung für mein Problem gefunden. Seit Seite 1 benötigt die @Scripts.Render("~/Scripts/app") Linie ich bewegte es von der Unterseite Layout.cshtml zu Page 1.cshtml seit Page 1.cshtml ist nicht der erste, um mehr zu laden.

Ich überprüfe derzeit, um sicherzustellen, dass dies nirgendwo sonst zu Fehlern führt, sobald ich das getan habe, werde ich dies als die Antwort markieren.

Verwandte Themen