2014-06-09 47 views
-1

我想在asp.net頁面中使用jquery-tagthis插件。 一切工作正常,但我不能訪問運行時的HTML屬性!ASP.NET - 在運行時訪問HTML屬性

jQuery插件使用「數據值」名稱創建html屬性。 當我在運行時訪問屬性時,它的null! 當我在aspx代碼上定義這個屬性時,我可以訪問具有初始值的屬性,而不是通過jquery改變值。 我檢查瀏覽器上的html代碼,它看起來很好,一切正常,但在服務器端,我已初始化的價值。 我檢查Page_Load和其他事件,我找不到和問題或價值。

我用asp:panel insted div runat =「server」,但它改變了任何東西!

ASPX代碼:

<asp:Panel ID="Tags" runat="server" data-value="test" ClientIDMode="Static"></asp:Panel> 

jQuery的變化值(做工精細,因爲我看到瀏覽器的新值使用的開發工具時)

$("#Tags").attr('data-value', commadelimitedTags); 

和C#代碼背後:

string t = Tags.Attributes["data-value"]; 

在Page_Load和ASP中:Button在Click事件中,它只返回「測試」值!

+0

'data-attribute'標籤用於存儲與匹配元素_相關聯的任意數據。你試過'$(「#標籤」)。data('value')'?你正在使用哪個版本的.net? – Krishna

+2

這是預期的行爲。如果要將值返回給服務器而不顯示給用戶,請使用HiddenFields。 –

+0

終於我使用asp:hiddenfield,但我很好奇知道爲什麼數據不傳遞給服務器。現在我知道這是asp.net的行爲。感謝您的回覆。 – mRizvandi

回答

1

html元素的屬性不會發布到服務器。

你需要做到以下幾點:

首先,在你的「保存」按鈕,不要把任何.NET OnClick方法。只能放一個調用保存函數的javascript方法。

其次,在保存功能中,找到所有屬性並將它們放在隱藏字段中。如果內容是動態的,也許你想將它序列化爲json並把它放在一個隱藏的字段中。

第三,調用你已經附加了一個.NET事件的按鈕的點擊事件$('#buttonId').click()。在這個活動中,您將能夠找到隱藏字段的內容。

+0

感謝您的最佳解決方案,我使用此解決方案將屬性傳遞給服務器。 – mRizvandi

0

屬性的頁面元素(如一個div)不會發布回到,所以後面的代碼無法讀取的變化,你可以讓使用JavaScript。

所以你可以在後面的代碼上設置它們,但是如果你用javascript來改變它們,那麼就不會回發到後面的代碼。

要在後面使用HiddenField發送代碼值,請在其中設置您的值,然後在代碼後面讀取它。

+0

感謝您的解決方案。它的作品不錯。 不幸asp.net dosent將html屬性傳遞給服務器。我通過page_load事件上的代碼創建屬性,但劑量改變了任何事情!壞ASP.NET :) – mRizvandi

+1

@MehdiRizvandi看,由於瀏覽器,屬性沒有傳遞到服務器。 asp.net與此無關。 – Aristos

+0

好吧,你說得對。然後BAD瀏覽器;) 感謝您的評論。 – mRizvandi