여기에 기사 및 질문 모음이 포함되어 있지만이 내용의 맨 아래로 갈 수는 없습니다.대상 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>
다른 것이 필요한 경우 알려 주시기 바랍니다. 내가 말했듯이 첫 번째 하중이 작용합니다. 폴더 링크를 클릭하면 대화 상자의 내용을 업데이트하는 대신 페이지 수준에서 다시 렌더링되는 모든 것이 올바르게 나타납니다.
감사합니다.