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