2014-05-19 65 views
0

在這裏搜索了一堆文章和問題,但無法深入到底層。目標div內的Ajax.ActionLink更新目標div

我有一個頁面,在jqueryUI對話框中打開一個文件管理器。該文件管理器只是在主資源文件夾中顯示一些縮略圖和子文件夾列表。這個想法是用戶點擊一個子文件夾,並得到該文件夾​​中的拇指和一個子文件夾列表..我相信你明白了。但是,單擊文件夾鏈接時,整個頁面不僅會更新對話框。

在父頁,我引用

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 

和jQuery的功能來準備和打開對話框:

$("#scopeManagerDialog").dialog({ 
      autoOpen: false, 
      width: 400, 
      resizable: false, 
      title: "File Manager", 
      modal: true, 
      buttons: { 
       "Close": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 

     $("#openScopeManager").click(function() { 
      $("#scopeManagerDialog").load("@Url.Action("Index", "ScopeManager")", 
       function(response, status, xhr) { 
        $("#scopeManagerDialog").dialog("open"); 
       }); 
      return false; 
     }); 

,並加載到DIV:

<div id="scopeManagerDialog" title="Scope Manager" style="overflow: hidden"> 
</div> 

控制器的操作返回部分

public ActionResult Index(string path) 
     { 
      if (path==null) 
      { 
       path = ConfigurationManager.AppSettings["assetRoot"]; 
      } 

      List<AssetVM> assets = ScopeManager.GetAllAssets(Server.MapPath(path)); 
      List<FolderVM> folders = ScopeManager.GetAllFolders(Server.MapPath(path)); 
      AssetSetVM model = new AssetSetVM() 
           { 
            Path = path, 
            Assets = assets, 
            Folders = folders 
           }; 
      return PartialView("ScopeManager", model); 
     } 

最後是部分自己。請注意,ActionLink指的是包含div(我想知道這是否是問題..我希望不是,我的直覺說這應該是可能的)。

<div id="scopeManagerContainer"> 
    <div id="folderList"> 
     <ul> 
      @foreach (FolderVM folder in Model.Folders) 
    { 
       <li>@Ajax.ActionLink(folder.Name,"Index","ScopeManager",new AjaxOptions {UpdateTargetId = "scopeManagerContainer"})</li> 
    } 
     </ul> 
    </div> 
    <div id="fileList"> 
     @foreach (AssetVM asset in Model.Assets) 
    { 
      <img src='@Url.Action("GetThumbnail", new { path = string.Format("{0}/{1}", Model.Path, asset.FileName), width = 100, height = 100 })' /> 
    } 
    </div> 
</div> 

請讓我知道是否有其他需要。正如我所說的第一次加載工作。一切都正確顯示,只是當我點擊文件夾鏈接時,它在頁面級重新渲染,而不是更新對話框的內容。

謝謝。

回答

0

我的錯誤..我應該已經設置目標到scopeManagerDialog而不是scopeManagerContainer。現在的問題確實有點毫無意義,但不確定刪除問題的政策是什麼。我現在將暫時擱置一個MOD來決定如何處理它。