2012-08-11 132 views
0

我想使用客戶端代碼設置Image控件的圖像URL,並使用C#代碼將圖像保存到服務器。以下是我已經實現了:客戶端和服務器端調用asp按鈕的問題

<asp:Button ID="btnImageUpload" OnClick="btnImageUpload_Click" runat="server" Text="Preview" CausesValidation="false" OnClientClick="Image_View();"/> 

C#代碼:

protected void btnImageUpload_Click(object sender, EventArgs e) 
{ 
    if (Directory.Exists(@"C:\\Images")) 
     SaveImage_Server(); 
    else 
    { 
     Directory.CreateDirectory(@"C:\\Images"); 
     SaveImage_Server(); 
    } 
} 
    public void SaveImage_Server() 
    { 
     try 
     { 
      if (FlUpldImage.PostedFile.ContentLength > 0) 
      { 
       String fn = Convert.ToString(DateTime.Now) + Path.GetFileName(FlUpldImage.FileName); 
       if (fn.Contains('/')) 
       { 
        fn = fn.Replace("/", ""); 
       } 
       if (fn.Contains(':')) 
       { 
        fn = fn.Replace(":", ""); 
       } 
       if (fn.Contains(" ")) 
       { 
        fn = fn.Replace(" ", ""); 
       } 
       String Saved_ImagePath = @"C://Images/" + fn; // making the path with created dynamically folder name 
       FlUpldImage.SaveAs(Saved_ImagePath); 
       HidnLocalImageURL.Value = Saved_ImagePath; 

      } 
     } 
     catch (Exception re) 
     { 
     } 
    } 

的JavaScript

function Image_View() { 
//  __doPostBack('<%= btnImageUpload.ClientID %>', ''); 

//  var clickButton = document.getElementById("<%= btnImageUpload.ClientID %>"); 
//  clickButton.click() 

     var idFlUpload = '<%= FlUpldImage.ClientID %>'; 
     var fu1 = document.getElementById(idFlUpload); 
     var idImgCntrl = '<%= imgCorrect.ClientID %>'; 
     var ImgCntrl = document.getElementById(idImgCntrl); 

     alert("You selected " + fu1.value); 
     ImgCntrl.setAttribute('src', fu1.value); 
    } 

現在我的問題是,一旦服務器端代碼執行頁被刷新並且使用JS設置爲圖像控件的鏈接被重置爲默認值。

我怎樣才能得到這個工作,其中圖像也得到保存和圖像的URL屬性也通過JS設置。

如果還有其他方法可以實現這一點,請讓我知道。提前致謝!

回答

0

你也必須在服務器上設置它。您可以使用隱藏字段保存的URL和訪問服務器隱藏字段,以便獲得url設置mgCntrl.ImageUrl

在HTML

<input type="hidden" runat="server" id="hdnImageSrc" /> 

在客戶端的JavaScript

hdnImageSrc = document.getElementById('<%= hdnImageSrc.ClientID %>'); 
mgCntrl.setAttribute('src', fu1.value); 
hdnImageSrc.value = fu1.value; 

在服務器端代碼

mgCntrl.ImageUrl = hdnImageSrc.Value;