使用javascript和C#,asp.net访问本地storge

时间:2017-11-17 22:05:37

标签: javascript asp.net local-storage

我希望有人会帮助我,我在最后几个小时里拔出头发......!

我正在使用带有c#

的asp.net网络表单

我的菜单中有以下按钮,此按钮打开一个页面,列出房地产经纪人的所选属性......

    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...
    }

列表作为Json存储在localstorage中,我可以在页面的文本框中看到正确的数据

   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我总是=“”

提前谢谢。!

1 个答案:

答案 0 :(得分:0)

如果你想使用隐藏字段,那么你应该使用 <%=txtPropList.ClientID%> 当你渲染页面并在inspect元素服务器中看到它时,它将呈现不同的Id,因此它不会将值存储在隐藏字段中,因此使用ClientID创建静态模式是可行的。但是,当您从c#代码调用javascript函数时,它将调用javascript函数,但它不会等待它并执行下一行代码,因为那时值不存储在隐藏字段中所以它会返回空值。

如果你想在页面加载事件上调用javascript函数,然后单击按钮并检索它将成功检索值的值,但我不认为这些是我认为可行的代码

我建议创建WebAPI,它只是从localstorage获取数据并执行操作 并且可以使用ajax调用轻松地从javascript调用webAPI

我希望这会有所帮助,答案是令人满意的☺

谢谢你☺