ASP.NET MVC 5中的Ajax(部分视图)不起作用 - 总是只打开部分视图

Tun*_*erx 2 ajax asp.net-mvc jquery asp.net-mvc-5

我有一个问题,点击它应该刷新页面的一部分(局部视图)只用"选择"打开新页面(这是应该在索引页面内显示的部分).我正在尝试使用本教程http://csharp-video-tutorials.blogspot.sk/2013/09/part-92-ajax-with-aspnet-mvc.html,但我不知道出了什么问题 - 我也没有在这个论坛上找不到任何相关信息.

共享_Layout中的资源:

@Scripts.Render("~/bundles/jquery")
Run Code Online (Sandbox Code Playgroud)

内部地图/索引:

@Ajax.ActionLink("All", "GetTracks",
                new AjaxOptions
                {
                    HttpMethod = "GET", // HttpMethod to use, GET or POST
                    UpdateTargetId = "mytestdiv", // ID of the HTML element to update
                    InsertionMode = InsertionMode.Replace // Replace the existing contents
                })

<div id="mytestdiv">
</div>
Run Code Online (Sandbox Code Playgroud)

地图控制器(我知道这只是使用Viewbag的坏解决方案 - 它只是暂时的):

public PartialViewResult GetTracks()
{
    List<int> trackIDs = new List<int>();

    var queryTrack = from dTrack in db.track
                        where dTrack.device_id == 1
                        select dTrack.id;

    foreach (int trackId in queryTrack)
    {
        trackIDs.Add(trackId);
    }

    ViewBag.trackIDs = trackIDs;
    return PartialView("SelectTrackView");
}
Run Code Online (Sandbox Code Playgroud)

我想用Ajax重新加载,位于〜/ Views/Map/SelectTrackView.cshtml中:

<select id="SelectTrack" name="idTrack" class="form-control" style="margin:20px" onchange="selectTrack()">

    @foreach (int number in ViewBag.trackIDs)
    {
        if (ViewBag.selectedidTrack == @number)
        {
            <option value="@number" selected="selected">@number</option>
        }
        else
        {
            <option value="@number">@number</option>
        }
    }
</select>
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Gre*_*ire 7

你在页面中引用了jquery.unobtrusive-ajax.js吗?

如果不是这些帮助者生成的data-*标签将不会被中断,并且该链接将被视为"正常"链接.

编辑:

我认为你需要这个软件包:Microsoft jQuery Unobtrusive Ajax.

如果你不想使用这个包,那就简单地说吧

<script>
(function($){
    $(document).on("click","a[data-ajax='true']", function(e){
        e.preventDefault();
        $("#"+ $(this).attr("data-ajax-update")).load(this.href);
    });
})(jQuery);
</script>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我从初学者那里得到了错误的库: - /真是愚蠢的错误......当我下载Microsoft jQuery Unobtrusive Ajax库时,它开始正常工作.使用`〜/ Scripts/jquery.validate.unobtrusive.min.js`它根本不工作:(非常感谢你 (2认同)