2017-11-17 165 views
0

我希望有人會幫助我,我拉出我的頭髮過去幾個小時......!訪問javascript和C#本地存儲,asp.net

我使用asp.net web表單用C#

我已經在我的菜單下面的按鈕,此按鈕會打開一個頁面,列出經紀人選擇屬性...

htmlCode.Append("<button type='button' class='btn btn-basic' id='btnEnquire' onclick='openEnquiryPage()'> <span class='glyphicon glyphicon-th-list'></span> View my list </button>"); 

    function openEnquiryPage() { 
    location.href = "EnquiryPage.aspx"; 
    //get the list from the storage into the hidden field 
    //getListOfProperties();//not in use... 
    } 

名單存儲在localStorage的爲JSON,我可以看到頁面

var retrievedData = localStorage.getItem("propertyArray"); 
    proplist2.value = retrievedData; 

宣佈在文本框中正確的數據在asp.net控制遵循

<asp:TextBox ID="TextBox1" runat="server" Text="initial"></asp:TextBox> 

但在隱藏字段,該數據始終= 「」

<asp:HiddenField ID="txtPropList" runat="server"></asp:HiddenField> 

JavaScript來填充隱藏字段...

function getListOfProperties() { 
    document.getElementById("body_content_txtPropList").value = retrievedData; 
    var proplist2 = document.getElementById("body_content_txtPropertyList"); 
    proplist2.value = retrievedData; 
    } 

當我調試在以下幾行後面的代碼...

Page.ClientScript.RegisterStartupScript(this.GetType(),"prop", "getListOfProperties();",true); 

    _propertyListJson = txtPropList.Value; 

propertyListJson我總是=「」

感謝您提前。

+0

爲什麼你不使用的:var myHidden =的document.getElementById( '<%= txtPropList.ClientID%>'); ,而ClientIDMode是靜態的。 –

+0

後面的代碼運行在服務器端,javascript運行在客戶端。如果您希望服務器訪問客戶端數據,則必須從客戶端向服務器發送客戶端數據。據服務器知道,它將是一個空字符串,因爲它創建了空表單。一個例子是,一位經理給員工一張表格,讓他們回到辦公桌前填寫,員工只是這樣做,但保留在辦公桌前。經理對錶格的最後一次瞭解是空白數據,他不能奇蹟般地知道員工將表格放回表格之前的狀態。 –

+0

謝謝您的輸入...嘗試一些想法,將重新發布。 – user1319463

回答

0

如果你想使用隱藏字段,那麼你應該使用 <%=txtPropList.ClientID%> 當你在頁面上呈現,看看它在檢查元素服務器將呈現不同的ID,因此它不會存儲在隱藏字段中的值只是如此使用ClientID創建靜態模式是可行的。但是,當你從C#代碼調用JavaScript函數時,它會調用JavaScript函數,但它不會等待它並執行下一行代碼,因爲那時該值不存儲在隱藏字段中,因此它會返回空值。

如果您想要再調用的JavaScript函數在頁面加載事件,然後單擊該按鈕並檢索值,將成功地檢索的價值,但我不認爲這是從我看來是可行的代碼

我建議創造條件,只是從localStorage的獲取數據並進行操作 和的WebAPI可以從JavaScript使用Ajax調用

我希望這將是有益的,答案是令人滿意的☺

容易叫的WebAPI

謝謝

+0

謝謝大家,是的,你無法獲得page_load事件的隱藏值。我必須附上一個按鈕才能獲得價值。它不能在頁面加載時直接加載......並且正如Ravi指出的其他方法將是web api。 – user1319463