2014-04-04 70 views
2

我有一个问题,点击哪个应该只刷新页面的一部分(局部视图)打开新页面只用“选择” (这是应在索引页面内显示的部分)。我正在尝试使用本教程http://csharp-video-tutorials.blogspot.sk/2013/09/part-92-ajax-with-aspnet-mvc.html来做到这一点,但我不知道什么是错的 - 在这个论坛中我也没有发现任何问题。ASP.NET MVC 5中的Ajax(局部视图)不起作用 - 总是打开仅局部视图

资源共享_layout:

@Scripts.Render("~/bundles/jquery") 

内部地图/索引:

@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> 

地图控制器(我知道这是只使用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"); 
} 

我想用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> 

感谢您的帮助。

+0

有浏览器的JavaScript控制台的任何错误? – Gregoire

+0

没有,控制台是干净 – Tunerx

+0

而也这是源代码,如何最终看起来像:All

Tunerx

回答

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> 
+0

时,我接着说:'它给错误:“Uncaught TypeError:无法设置属性”不明显的“未定义”。我真的不确定 - 但'@ Scripts.Render(“〜/ bundles/jquery”)'不会增加不显眼的?因为在我的项目脚本中我添加了这个包。但是,有可能它并不像我想的那样工作。 – Tunerx

+2

@Tunerx查看我的编辑 – Gregoire

+2

谢谢,我从开始的坏图书馆: - /真正愚蠢的错误...当我下载微软jQuery Unobtrusive Ajax库它开始正常工作。使用'〜/ Scripts/jquery.validate.unobtrusive.min.js'它根本不能工作:(。非常感谢你 – Tunerx