从asp.net应用程序中的javascript获取数据

Get data from javascript in asp.net application

本文关键字:javascript 获取 数据 asp net 应用程序      更新时间:2023-09-26

我在asp.net应用程序中有一个apsx页面,其中的元素是根据用户的输入使用javascript构建的。当用户单击"保存"按钮时,我需要在服务器上创建一个包含用户提供的所有数据的文件。问题是这些数据存储在javascript中(在生成的div中)。我需要以某种方式将这些数据输入asp.net按钮点击函数,或者用所有数据作为参数调用该函数。如何实施?

您可以随时尝试在表单的隐藏输入字段中弹出所需的数据,这样您就可以使用Request.Form["fieldName"]访问它(只需记住给隐藏输入字段一个"name"属性,否则您将花费不必要的时间试图弄清楚为什么不能通过Request.form:p访问它)。这可能是实现这一目标的最简单方法。。。

编辑

为了给你一个快速的想法,这里有一些来自我的一个项目的示例代码,我在其中基于某些动态字段生成隐藏的输入字段,以便在从某些按钮/锚调用Save()函数后发布回服务器:

function Save() {
    $("div.fieldcontainer span.readonly").each(function () {
        var fieldId = $(this).attr("id");
        var fieldValue = $(this).html();
        var ctrl = $("<input type='"text'" id='"" + fieldId + "'" name='"" + fieldId + "'" style='"display:none;'" />");
        ctrl.val(fieldValue);
        $(this).parent().append(ctrl);
    });
    $("div.fieldcontainer a.attachment").each(function () {
        var fieldId = $(this).attr("id");
        var fieldValue = $(this).text() + "|" + $(this).attr("href");
        var ctrl = $("<input type='"text'" id='"" + fieldId + "_txtHiddenValue'" name='"" + fieldId + ":txtHiddenValue'" style='"display:none;'" />");
        ctrl.val(fieldValue);
        $(this).parent().append(ctrl);
    });
    $("div.fieldcontainer select").each(function () {
        var fieldId = $(this).attr("id");
        var fieldValue = $(this)[0].value;
        var fieldText = $(this).find("option[value='" + fieldValue + "']").text().replace("<", "").replace(">", "");
        $(this).attr("id", fieldId + "_ORIGINAL");
        var ctrl = $("<input type='"text'" id='"" + fieldId + "'" name='"" + fieldId + "'" style='"display:none;'" />");
        ctrl.val(fieldText + "$" + fieldValue);
        $(this).parent().append(ctrl);
    });
    $("div.fieldcontainer input[type='checkbox']").each(function () {
        var fieldId = $(this).attr("id");
        var fieldValue = $(this).attr("checked");
        $(this).attr("id", fieldId + "_ORIGINAL");
        var ctrl = $("<input type='"text'" id='"" + fieldId + "'" name='"" + fieldId + "'" style='"display:none;'" />");
        ctrl.val(fieldValue);
        $(this).parent().append(ctrl);
    });
    document.form1.submit();
}

您可以实现相同类型的逻辑来循环浏览每个客户端生成的div,并在提交表单之前为每个div创建一个隐藏的输入。这样,当用户忙于与页面交互时,您就不会不必要地用太多额外的标记使页面陷入困境…

在div中显示数据时,也将数据保存在隐藏字段中。这样,当你的表格被张贴时,你会在服务器上获得数据,然后你可以保存它

编辑

这里有一个例子:

<head runat="server">
    <title>my title</title>
    <script type="text/javascript">
        function init() {
            document.getElementById("output").innerHTML="<input type='hidden' name='name' value='wasim'/>";
        }
    </script>
</head>
<body onload="init();">
    <form id="form1" runat="server">
    <div id="output">
    </div>
    <asp:Button ID="btnSubmit" runat="server" Text="Submit" onclick="Button1_Click" />
    <br />
    <asp:Label ID="lblOutput" runat="server" Text="Label"></asp:Label>
    </form>
</body>
</html>

这是服务器端代码:

 protected void Button1_Click(object sender, EventArgs e)
    {
        lblOutput.Text = Request.Form["name"];
    }

使用隐藏变量来存储用户输入<input type="hidden" name="user_input_id" id="user_input_id" />

在按钮点击功能中,使用Request.QueryString["user_input_name"].Valueuser_input_id.Value检索值

如果这还不清楚,请发布您的代码片段,这将为您提供更好的图片