我希望有人会帮助我,我在最后几个小时里拔出头发......!
我正在使用带有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我总是=“”
提前谢谢。!
答案 0 :(得分:0)
如果你想使用隐藏字段,那么你应该使用
<%=txtPropList.ClientID%>
当你渲染页面并在inspect元素服务器中看到它时,它将呈现不同的Id,因此它不会将值存储在隐藏字段中,因此使用ClientID
创建静态模式是可行的。但是,当您从c#代码调用javascript函数时,它将调用javascript函数,但它不会等待它并执行下一行代码,因为那时值不存储在隐藏字段中所以它会返回空值。
如果你想在页面加载事件上调用javascript函数,然后单击按钮并检索它将成功检索值的值,但我不认为这些是我认为可行的代码
我建议创建WebAPI,它只是从localstorage获取数据并执行操作 并且可以使用ajax调用轻松地从javascript调用webAPI
我希望这会有所帮助,答案是令人满意的☺
谢谢你☺