我在asp.net应用程序中有一个apsx页面,其元素是根据用户的输入使用javascript构建的。当用户单击“保存”按钮时,我需要在服务器上创建一个文件,其中包含用户提供的所有数据。问题是这些数据存储在javascript中(在生成的div中)。我需要以某种方式将这些数据放入asp.net按钮单击函数或调用函数,并将所有数据作为参数。如何实施?
答案 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"].Value
或user_input_id.Value
检索值
如果不清楚,请发布您的代码段并为您提供更好的图片