2012-08-01 13 views

回答

3

您需要使用AJAX。一個簡單的方法就是使用PageMethods。首先,[WebMethod]屬性添加到您的方法:

[WebMethod] 
protected static string GetListImageFilePath(string fileName) 
{ 

此方法必須是靜態的。

然後在你的腳本管理器設置EnablePageMethods="True"。那麼你可以這樣稱呼你的C#代碼:

var fileName = args.get_fileName(); 
PageMethods.GetListImageFilePath(fileName, function (path) { 
    lstImg.src = path; 
}); 
1

你不能。 JavaScript運行在客戶端上,並且asp.net代碼位於服務器上。您需要使用與服務器如通信的一些其他的方式:阿賈克斯到Web服務,回傳等

0

你根本無法做到這一點,因爲JavaScript是在客戶端運行IE瀏覽器的地方作爲服務器代碼運行在服務器。你可以做的是改變你的GetListImageFilePath函數,以便它返回圖像目錄的基本URL,然後附加文件名來創建圖像路徑。

var fileName = args.get_fileName(); 
lstImg.src = <%=GetListImageFilePath() %> + '/' + fileName; 

欲瞭解更多信息,如在Javascript中的服務器變量如何處理,我已經回答了StackOverFlow thread這裏。請看看以澄清你的疑問。

0

我覺得get_fileName()是服務器端的功能。所以你可以直接從HTML中調用它。 檢查這些鏈接

http://weblogs.asp.net/jalpeshpvadgama/archive/2012/01/07/asp-net-page-methods-with-parameters.aspx http://stackoverflow.com/questions/7633557/asp-net-is-it-possible-to-call-methods-within-server-tag-using-eval

如果調用使用RegisterStartupScript()RegisterClientScriptBlock()那麼這些將在客戶端不能在服務器端調用JavaScript函數。

如果你想立即調用javascript函數在服務器端就宣佈等效服務器端功能。

0

在您的網站上添加一個ASHX(HTTP處理程序),那麼你可以使用lstImg.src = '/example.ashx?name=' +文件名。

public class ExampleHandler: IHttpHandler { 

    public void ProcessRequest (HttpContext context) { 
    var request = context.Request; 
     string fileName = (string)request.QueryString["name"]; 
     // your logic 
     context.Response.Write(yourpath) 
    } 

    public bool IsReusable { 
    get { 
     return false; 
    } 
    } 
} 
相關問題