Przykładowy kod: w projekcie w Visual Studio MVC 5, mam skonfigurować następujące kontroler i widoki:Dyskretna błąd AJAX: "Uncaught ReferenceError: Sys nie jest zdefiniowana"
Controller
TestController.cs
public class TestController : BaseController
{
public ActionResult Index()
{
return View("Index");
}
public PartialViewResult MyPartialView1()
{
return PartialView("PartialView1");
}
public PartialViewResult MyPartialView2()
{
return PartialView("PartialView2");
}
}
Odwiedzin
Index.cshtml
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<script src="@Url.Content("~/Scripts/jquery-2.1.1.min.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
</head>
<body>
<h1>Testing Unobtrusive AJAX</h1>
@Ajax.ActionLink("Partial 1", "MyPartialView1", "Test",
new AjaxOptions() { UpdateTargetId = "contentShouldLoadHere", InsertionMode = InsertionMode.Replace })
|
@Ajax.ActionLink("Partial 2", "MyPartialView2", "Test",
new AjaxOptions() { UpdateTargetId = "contentShouldLoadHere", InsertionMode = InsertionMode.Replace })
<div id="contentShouldLoadHere">
<p>This will get replaced.</p>
</div>
</body>
</html>
PartialView1.cshtml
<h1>Test 1</h1>
PartialView2.cshtml
<h1>Test 2</h1>
Pytanie
Jeśli dobrze zrozumiałem, kliknięcie "Partial 1" powinno załadować zawartość "PartialView1" do elementu HTML z identyfikatorem "contentShouldLoadHere". Zamiast kliknięciu „Partial 1” powoduje normalne strona załadowała działań MyPartialView1 (~/Test/MyPartialView1)
, aw konsoli dev narzędzi Chrome pojawia się następujący błąd JavaScript:
Uncaught ReferenceError: Sys is undefined
Czy ktoś wie dlaczego tak jest i jak ja można to naprawić
Uwagi - mam potwierdzone poprzez Chrome Dev Narzędzia że oba skrypty zostały prawidłowo załadowany - HTML dla łącza generowanych przez pomocnika @Ajax jest:?.
<a href="/Test/MyPartialView1" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: 'contentShouldLoadHere' });">Partial 1</a>
You html powinien wyglądać jak "Partial 1" tak, więc tak dziwne tutaj –
Czy masz załadowane inne skrypty? Myślę, że ten znacznik był używany z 'MicrosoftMvcAjax.js' –
@StephenMuecke nope. Na mojej prawdziwej stronie robię, ale strona próbna, którą eksperymentuję, zawiera tylko te skrypty, dane wyjściowe są dokładnie takie, jak pokazano w pliku View, z wyjątkiem kodu HTML generowanego przez helpera. –