簡體   English   中英

從asp.net應用程序中的javascript獲取數據

[英]Get data from javascript in asp.net application

我在asp.net應用程序中有一個apsx頁面,該頁面的元素根據用戶的輸入使用javascript構建。 當用戶單擊“保存”按鈕時,我需要在服務器上創建一個文件,其中包含用戶提供的所有數據。 問題在於此數據存儲在javascript中(在生成的div中)。 我需要某種方式將這些數據放入asp.net按鈕的click函數中,或者以所有數據作為參數來調用該函數。 如何實施?

您始終可以嘗試在表單上的隱藏輸入字段中彈出所需的數據,因此可以使用Request.Form["fieldName"]來訪問它(只記得為隱藏的輸入字段提供“名稱”屬性,否則,會花費不必要的時間嘗試找出為什么無法從背后的代碼中通過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檢索值

如果不清楚,請發布您的代碼段,以便為您提供更好的圖片

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM