2014-05-19 2 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 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

내 오류 .. targetManager를 scopeManagerDialog가 아닌 scopeManagerContainer로 설정해야합니다. 질문은 실제로 지금은 조금 무의미하지만 질문을 삭제하는 정책이 무엇인지 확실하지 않습니다. 나는 모드와 함께 무엇을 할 것인지를 결정하기 위해 지금은 맡길 것이다.