【问题标题】:Saving values on page to server将页面上的值保存到服务器
【发布时间】:2013-04-30 22:42:53
【问题描述】:

我正在创建一个页面,允许用户从服务器上的现有列表中删除值,然后将新列表(已删除的值)保存到服务器。

我的 javascript 函数获得了正确的值,我只是无法将更新的列表返回到服务器。为了保持精简,我有 viewstatemode="disabled"。

我见过从客户端执行 javascript 的各种方法。

我想知道的是,是否有可能有一个按钮调用 javascript 函数,获取它返回的值(或保存在某处的字段中),所有在页面通过 OnInit 之前,OnLoad功能?

【问题讨论】:

    标签: c# javascript asp.net


    【解决方案1】:

    创建如下隐藏字段

    <input type="hidden" ID="hfid" />
    

    从javascript设置值

    document.getElementById("hfid").value = "value to set";
    

    你可以像下面这样从服务器访问它

    string fromclient = Request.Form["hfid"];
    

    【讨论】:

    • 这并没有真正回答这个问题,只是对关于这个主题的其他答案的重新散列。此外,它不起作用;不知道是不是因为我禁用了 ViewState 而你启用了它....
    • 进一步研究,它不起作用的原因是因为你在 Value 应该是小写的时候大写: value 否则你只是在隐藏字段对象中创建一个新变量:Reference
    • @BrDaHa 是的,应该是value JavaScript 区分大小写
    【解决方案2】:

    我同意之前的回答(即将值存储在隐藏字段中)。它也可以通过使用 cookie(持久或非持久)来实现。问候,AB

    【讨论】:

      【解决方案3】:

      我不想看起来像个混蛋并回答我自己的问题,但为了帮助其他偶然发现此问题的人:

      我解决这个问题的方法是使用 asp:Button 控件的 OnClientClick 属性。这允许您调用客户端 javascript 函数(显然),但更重要的是它允许您在页面生命周期开始之前执行代码。

      <asp:Button runat="server" ID="btnSave" Text="Save" onclick="btnSave_Click" OnClientClick="saveCurrentList();" />
      

      saveCurrentList(); 是我在我的aspx页面头部的一个javascript函数,它收集页面上的值(已被javascript修改,以及我需要这个的原因发生在页面回发之前)。我将它保存在一个字段中(使用 jQuery)并使用它的 val(); 将它保存在字段中。方法:

          function saveCurrentList() {
              var list = $("#currentList a").map(function () {
                  return $(this).text();
              }).get();
              $("#hdnCurrentList").val(list.join(","));
          }
      

      使用这些技术,我可以让 javascript 在回发之前将值保存到隐藏字段,然后在服务器端检索它们进行处理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-23
        • 1970-01-01
        • 2017-03-19
        • 2011-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多