15

コード例: Visual Studio の MVC 5 プロジェクトで、次のコントローラーとビューをセットアップしました。

コントローラ

TestController.cs

public class TestController : BaseController
{
    public ActionResult Index()
    {
        return View("Index");
    }

    public PartialViewResult MyPartialView1()
    {
        return PartialView("PartialView1");
    }

    public PartialViewResult MyPartialView2()
    {
        return PartialView("PartialView2");
    }
}

ビュー

インデックス.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>

質問

私の理解が正しければ、「Partial 1」をクリックすると、「PartialView1」のコンテンツが「contentShouldLoadHere」という ID を持つ HTML 要素に読み込まれるはずです。代わりに、「Partial 1」をクリックすると、 MyPartialView1 アクション ( の通常のページ読み込みが発生~/Test/MyPartialView1)し、Chrome 開発ツール コンソールで次の JavaScript エラーが表示されます。

Uncaught ReferenceError: Sys is undefined

これがなぜなのか、どうすれば修正できるのか誰か知っていますか?

- Chrome Dev Tools で、両方のスクリプトが正しく読み込まれていることを確認しました。- @Ajax ヘルパーによって生成されるリンクの HTML は次のとおりです。

<a href="/Test/MyPartialView1" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: &#39;contentShouldLoadHere&#39; });">Partial 1</a>
4

2 に答える 2