2010-07-21 54 views
0

你可以在下面看到我想要做的。我試圖做同樣的事情有兩種方式,但都不行。我不明白這裏的根本是什麼?簡單的ASP.Net問題<%#和<%=不工作!

<asp:HyperLink ID="HyperLink1" runat="server" 
    NavigateUrl="javascript:$('#<%= fileInput1.ClientID%>').uploadifyUpload()"> 
    </asp:HyperLink> 

OR

<asp:HyperLink ID="HyperLink1" runat="server" 
      NavigateUrl='<%= GetJavascriptString()%>'> 
    </asp:HyperLink> 

public void GetJavascriptString() 
{ 
    return "javascript:$('#" + fileInput1.ClientID + "').uploadifyUpload();"; 
} 

已經有幾個答案的工作和不工作。我認爲詹姆斯庫倫擁有我期待的東西。原因,雖然我不知道爲什麼我的代碼無法正常工作,並修復了它。謝謝你的答案。

+0

這已經被問過,但是因爲它是關於非字母數字字符的搜索,甚至更難。 – ChrisF 2010-07-21 16:25:53

+1

看到這個問題:http://stackoverflow.com/questions/160097/whats-the-difference-between-and – M4N 2010-07-21 16:30:11

+0

他們叫什麼?我知道,試圖谷歌它是沒用的。 – Jason 2010-07-21 16:30:43

回答

1

我認爲問題是,ASP.NET不喜歡通過插入文本<%= %>進入服務器控件。

但是,爲什麼還要像一個超鏈接那樣簡單的服務器控件?你真正想要的只是:

<a id="HyperLink1" 
    href="javascript:$('#<%=fileInput1.ClientID%>').uploadifyUpload()"> 
</a> 

試試看。

+0

我認爲這是我正在尋找的答案。這似乎是問題。它不想通過腳本標籤輕鬆地將東西插入到服務器控件中。工程順便說一句。 – Jason 2010-07-21 16:59:23

0

'<%= fileInput1.ClientID%>'

更新:

NavigateUrl = 「JavaScript的: '<%= fileInput1.ClientID%>' uploadifyUpload()」>

+0

那很好。但是,我怎樣才能得到它周圍的js? – Jason 2010-07-21 16:29:50

+0

檢查此更新 – MCain 2010-07-21 16:47:35

+0

,但「$('#」部分是重要的(他試圖調用jQuery) – 2010-07-21 16:59:52

0

據我所知,兩者都應該做你想做的事。 (假設GetJavascriptString()實際上位於代碼隱藏文件中,或者至少在<% %>區塊中。)

您得到了什麼錯誤?

+0

href =「javascript: $('#<%= fileInput1.ClientID%>')。uploadifyUpload()是呈現給第一個頁面的最後一頁。 – Jason 2010-07-21 16:33:10

+0

第二種方法呈現這個:href =「<%=%20GetUploadString()% 20%>「 – Jason 2010-07-21 16:36:14

3

這是一個相當不錯的腳本標籤。

http://naspinski.net/post/inline-aspnet-tags-sorting-them-all-out-(3c25242c-3c253d2c-3c252c-3c252c-etc).aspx

(由asp.net腳本標記在谷歌搜索找到)

更新:完成你正在嘗試做

一種方法是:

<script type="text/javascript"> 
    function GetJavascriptString() { 
     return $('#<%= fileInput1.ClientID %>').uploadifyUpload(); 
    } 
</script> 

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="javascript:GetJavascriptString()" /> 

這只是從您的超鏈接調用一個JavaScript函數,它將運行您正在嘗試執行的jquery。

另外,可以說是更好的方式,來實現這一點是使用代碼隱藏或內嵌腳本來設置導航url屬性:

<% HyperLink2.NavigateUrl = "javascript:$('#" + fileInput1.ClientID + "').uploadifyUpload();"; 
%> 
<asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="javascript:GetJavascriptString()" /> 
+0

This works。但我仍然不明白爲什麼我的代碼不起作用。 – Jason 2010-07-21 16:51:30

+0

我發現一篇文章很好地描述了爲什麼你的例子遇到了錯誤。http://forums.asp.net /t/1002543.aspx,特別是這裏的註釋http://forums.asp.net/t/1002543.aspx#1324224。 – sgriffinusa 2010-07-21 17:07:40

0

我認爲你可以做到你要尋找的是這樣的:

<asp:HyperLink ID="HyperLink1" runat="server" 
    NavigateUrl="myURL" 
    OnClientClick="javascript: if(document.getElementById('ctl00_myHTMLelementID').value.length > 0){ $get('ctl00_myHTMLelementID').uploadifyUpload()" > 
</asp:HyperLink> 

我們使用的OnClientClick(它觸發之前別的,所以如果返回「假」,它不與任何NaviateURLs或進行的OnClick),並首先確保存在的元素,使我們沒有遇到任何JavaScript錯誤,凍結了頁面。 'ctl00_myHTMLelementID'是通過在你的瀏覽器中查看你的代碼的源代碼並找到在你的HTML中命名爲控件的ASP.NET。

。 按照#和%...

ASP。NET的意見看起來很像HTML註釋(<!-- comment -->

<%-- <asp:TextBox ID="uxTextBox1" runat="server" Text="Howdy!" /> --%>] 

ASP.NET具有特殊的數據綁定代碼,它看起來像這樣,它只能在中繼器或一個GridView

<asp:Label ID="uxActiveLbl" runat="server" Text=’<%# DataBinder.Eval(Container.DataItem, "ClientActive").ToString() == "1" ? "Yes" : "No"%>’ /> 
內部使用

而且,你可以通過簡單的啓動代碼塊,像這樣的HTML內運行ASP.NET代碼:

<% String myvariable="foobar" %> 
+0

我可以在那裏硬編碼它,如果我看看源代碼並找到控件ID。我在做什麼,但隨着網頁改變ot她的人員,controlID更改和分頁符。 工作得很好,只要控件名稱永不改變。這就是爲什麼我想要得到fileInput1.ClientID,而不是在源中查找呈現的控件名稱。 – Jason 2010-07-21 16:47:19