2013-03-27 1 views
0

보기 (UserPicture.aspx)에서 사용자, 이미지, 업로드 파일 및 제출 단추의 드롭 다운 목록이 있습니다. 선택한 사용자를 변경하면 표시된 이미지를 해당 프로필 사진으로 변경하고 싶습니다. fileupload 및 제출 버튼을 사용하여 사용자를 위해 이미지를 수정할 때까지 모든 것은 잘 작동합니다. 그 후 변경된 사용자를 다시 선택하려고 시도하면 자바 스크립트 함수는 컨트롤러에 $ .get (...)을 더 이상 수행하지 않습니다.. 변경되지 않은 모든 사용자가 여전히 $ get()을 실행합니다 ...mvc dropdownlist 선택한 항목을 다시 선택할 수 없음

어떻게 해결할 수 있습니까?

감사합니다.


내보기 항목 :

public ActionResult GetUserProfilePath(string val1) 

: 이미지 경로를 반환 컨트롤러에서이 finction으로

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'/>"; 
    }); 
}; 

: 나 이미지 경로를 얻는 방법

<%= 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> 

제출 버튼은 다음을 트리거합니다.

[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

캐싱 문제 일 수 있습니다. 당신의 GetUserProfilePath() 액션을이 속성을 추가하십시오 :

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

또는 cache:false

+0

캐시 .ajax({ type: 'get' }).get() 변경 : 거짓 트릭을했다. 감사합니다 – GaZ

+0

다른 해결책은 GET 대신 POST를 사용하는 것이 었습니다. – GaZ

관련 문제