mvc dropdownlist所选项目无法重选

时间:2013-03-27 18:54:44

标签: javascript asp.net-mvc drop-down-menu

在视图(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();
}

1 个答案:

答案 0 :(得分:1)

可能是一个缓存问题。尝试将此属性添加到GetUserProfilePath()操作:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]

或者使用.get()

.ajax({ type: 'get' })更改为cache:false