Click here to Skip to main content
15,891,033 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
I am writing a page where users can update their profile for a simple chat board. There is an asp:Image control which is loaded with the user's current avatar. On the same page is a list of available avatar images; each is a standard HTML img tag with the following attribute:
JavaScript
onclick='setAvatar(this);'

The function itself looks like this:
JavaScript
function setAvatar(e) {
    var file = e.getAttribute('src');
    var img = document.getElementById('ctl00_ContentHolder_UserAvatar');
    img.src = file;
    return true;
}
In this script, file is the src attribute for the stock image being clicked, and img is the asp:Image control that displays the current or newly selected avatar image. This all works fine and dandy: clicking on a stock image changes the image displayed on the control.

My problem occurs when the user clicks the Save button and a postback occurs. Because the change is made in the browser, it is not reflected in the ViewState and so gets lost.

What I want is to let the user select an image and then update his profile with only the single postback that happens when clicking Save. Is there any way I can get there?
Posted
Comments
So, basically the new image source(selected by user) gets lost after post back, right?
I mean you can't access the new source in the code behind, that's the problem, right?

1 solution

I guess the questions I have asked will get me a reply as yes.

So, coming to the problem, I strongly believe that there is no such direct method to reflect the src attribute changes done at client side to server side when you do PostBack.

Instead use one HiddenField, in which you can store that same src Url.
Then the value of that HiddenField can be accessed easily at the server side after PostBack.
 
Share this answer
 
Comments
Gregory Gadow 5-Jun-13 9:34am    
Yup, got it working now. I poked around CP and couldn't find a solution which is why I asked the question; I may post my code as a tip here so others can find it. Thanks!
Most Welcome. My Pleasure... :)

Yes, you should add a Tip for sure. Thanks for accepting and up-voting.
Yes, nicely done... Cheers. I have rated 5 stars.
Many thanks for mentioning my name.

Can I request something to you?
Can you just link my name there in the tip, to my Code Project profile and also refer this answer?

I hope you understand me. It's fine if there is any problem.

Regards,
Tadit
Gregory Gadow 5-Jun-13 12:28pm    
I linked you on the article; this time it stuck.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900