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

时间:2012-02-09 08:24:21

标签: javascript asp.net

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

3 个答案:

答案 0 :(得分:2)

您始终可以尝试在表单上的隐藏输入字段中弹出所需的数据,这样您就可以使用Request.Form["fieldName"]访问它(只需记住为隐藏的输入字段提供“名称”属性,否则您'我会花费不必要的时间来试图找出你无法通过Request.Form:P)从代码隐藏中访问它的原因。这可能是实现这一目标的最简单方法......

修改

为了给你一个快速的想法,这里是我的一个项目的一些示例代码,我根据某些动态字段生成隐藏的输入字段,一旦从某些按钮调用Save()函数就回发到服务器/ anchors:

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创建隐藏输入。这样,当用户忙于与其进行交互时,您不会因为额外的标记而不必要地陷入困境......

答案 1 :(得分:1)

在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"];
    }

答案 2 :(得分:0)

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

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

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