在视图(UserPicture.aspx)中,我有一个用户下拉列表,一个图像,一个文件上传和一个提交按钮。当我更改所选用户时,我想将显示的图像更改为相应的个人资料图片。在我使用fileupload和submit按钮修改用户的图像之前,一切正常。之后,如果我尝试重新选择已更改的用户, javascript函数不会再将$ .get(...)触发到控制器。所有未更改的用户仍然会触发$ get()...
我该如何解决这个问题?
感谢。
我的观看项目:
<%= Html.DropDownList("cbUsers", (IEnumerable<SelectListItem>)@ViewBag.cbUsers, new Dictionary<string, object> { { "onChange", "swapImage()" } })%>
<input type="file" name="myImage" id="myImage"/>
<div id="ProfilePicture">
<img alt="Profile picture" src="../../images/img_profile.png" />
</div>
<button type="submit"><asp:Label runat="server" Text="Update" /></button>
我如何获得图片路径:
function swapImage() {
var e = document.getElementById("cbUsers");
var strUser = e.options[e.selectedIndex].value;
$.get("/Admin/GetUserProfilePath",
{ val1: strUser },
function (data) {
document.getElementById("ProfilePicture").innerHTML = "<img src='" + data + "' alt='Profile picture' class='searchPicture'/>";
});
};
在控制器中使用此结果返回图像路径:
public ActionResult GetUserProfilePath(string val1)
提交按钮会触发:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UserPicture(object cbUsers, HttpPostedFileBase myImage)
{
HandleUploadedFile(cbUsers, myImage);
ViewBag.cbUsers = new IEnumerable<SelectListItem>();//Get the users list
return View();
}
答案 0 :(得分:1)
可能是一个缓存问题。尝试将此属性添加到GetUserProfilePath()操作:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
或者使用.get()
.ajax({ type: 'get' })
更改为cache:false