SelectList IUploadRepository.AlbumList() { var List = new SelectList(new List<SelectListItem>()); return List; } SelectList IUploadRepository.AlbumList(string albumtype) { if (!String.IsNullOrWhiteSpace(albumtype)) { var item = from x in db.Albums where x.AlbumType == albumtype && x.Account.AlbumAccount == HttpContext.Current.User.Identity.Name select x.AlbumName; var List = new SelectList(item); return List; } else { var List = new SelectList(new List<SelectListItem>()); return List; } } List<String> IUploadRepository.JsonAlbumList(string albumtype) { if (!String.IsNullOrWhiteSpace(albumtype)) { var List = from x in db.Albums where x.AlbumType == albumtype && x.Account.AlbumAccount == HttpContext.Current.User.Identity.Name select x.AlbumName; return List.ToList(); } else { return new List<String>(); } } SelectList IUploadRepository.TypeList() { var item = from x in db.Albums select x.AlbumType; var List = new SelectList(item.Distinct()); return List; } public ActionResult ImageUpLoad() { ViewBag.AlbumType = _UploadRepository.TypeList(); ViewBag.AlbumName = _UploadRepository.AlbumList(); return View(); } public JsonResult GetAlbum(string albumtype) { return Json(_UploadRepository.JsonAlbumList(albumtype), JsonRequestBehavior.AllowGet); }
$(function () { var typevalue = $("#Album_AlbumType").val(); if (typevalue == "") { $("#Album").hide(); //隐藏 } $("#Album_AlbumType").change(function () { var selectedvalue = $("#Album_AlbumType").val(); var TheUrl = "/Upload/GetAlbum?albumtype=" + escape(selectedvalue); //參數值含有中文,利用escape()進行轉碼 $.getJSON(TheUrl, null, function (data) { $("#Album_AlbumName").empty(); //清空下拉列表選項 if (selectedvalue == "") { $("#Album").hide(); //隐藏 } else { $("#Album").show(); //顯示 } $("#Album_AlbumName").append( $("<option></option>", { value: "", text: "请选择" }) ); $.each(data, function (i, item) { $("#Album_AlbumName").append($("<option></option>").val(item).html(item)) }); }); }); });
功能上是正常的,问题运行后,新添加一个Album记录(成功保存到数据库),但dropdownlist没有即时出现新增加的记录,需要关闭浏览器(停止调试),再重新运行,刚才添加的记录才出现。请教各位高手,这是哪里出问题的,为什么dropdownlist不会即时显示新增加的记录
即使更新就得用AJAX异步传输。不然肯定要重新加载也面才会有显示最新的数据
用AJAX就可以?我手工刷新(F5)整个页面也没用显示!必须要停止调试,关闭浏览器再重新运行
@时光刺客: 调试的时候函数执行完毕并返回视图了吗?return View();
在不用异步传输又是在调试状态下,专辑创建完毕保存到数据库后,函数体没执行完毕,没返回视图,数据是没有刷新到页面的。
@时光刺客: 你附上的代码没看到创建专辑的那个函数啊,贴出来看看嘛
AlbumList()函数获得列表后没返回视图,不是很明白楼主的意思
@时光刺客:我做过类似的创建图片专辑然后用户上传图片的项目。
流程是这样的
public ActionResult CreateAblum(PictureModels Models) { SaveDb(); return RedirectToAction("MyPicAblums", "Picture"); } public ActionResult MyPicAblums() { string[] Result = ExcuteSql() ViewBag.Ablums = new SelectList(x); return View(); } 然后在MyPicAblums页面 @Html.DropDownListFor(m => m.PictureAblum, ViewBag.Ablums as SelectList)
@大芝麻: 是这样吗?我用于创建Album的是不在同一个Controller中,也不在同一个ActionResult,连View也不同。出问题的是这个有dropdownlist的。创建Album的功能,这样也会影响?新手求指教?
@时光刺客: 介不介意把程序发来瞧瞧。我自己最近也在做这个http://ulocl.oicp.net:8082/Picture/Index
刚好这个图片专辑创建和上传的功能做好了。交换下相互学习学习?
821881145
@大芝麻: 程序现在有点难度,因为它不在此电脑上!程序放另一台电脑!
@时光刺客: 你加我发个DEMO给你看看是不是你想要的
新添加一个Album记录(成功保存到数据库)后,用ajax重新加载一下下拉列表就可以了。