当前位置: 首页 > 知识库问答 >
问题:

处理大量Post变量ASP.NET

南门刚捷
2023-03-14

我遇到了一个问题,我有多个窗体上有许多控件(20-40)。问题是,当我处理回发时,我需要将它们的值放入变量中,如果它们不是ASP.NET服务器控件(即选择、输入等)我有时需要确保他们的存在。因此,如果我有一个普通html复选框,它是未选中的,它将不会被发送到服务器,您需要检查它的存在,然后才能获得它的值。之后,我需要将它们传递到一个方法中以保存到数据库中。该方法处理我所有的crud和业务验证。设置这个充其量是乏味的,而且非常耗时。人们在做什么来处理这个?我正在使用ASP.NET4.0 Web窗体和VB.NET。一个想法是将http上下文传递到方法中,让方法中的代码查找值。不过,这似乎不是一个好的解决方案。任何建议都将非常感谢,因为我知道我不是唯一一个遇到这个问题的人。提前谢了。

韦德

共有1个答案

耿珂
2023-03-14

对于大型表单,可以:

  1. 在客户端创建javascript对象,将其转换为JSON字符串,并将JSON字符串放到ASP.NET控件隐藏或不可见的textarea中;
  2. 提交表单并将JSON反序列化为服务器上的对象。

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.9.1.min.js" type="text/javascript"></script>
    <script src="Scripts/jquery.validate.min.js" type="text/javascript"></script>
    <script src="Scripts/jquery.validation.net.webforms.min.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:HiddenField runat="server" ID="Hidden1" />
    <input type="checkbox" id="CheckBox1" checked />
    <input type="checkbox" id="CheckBox2" />
    <input type="text" id="text1" name="text1" value=""/>
    <asp:Button runat="server" Text="Button" ID="Button1" OnClientClick="createJSON()" OnClick="Button1_Click" />
    <script type="text/javascript">

        function createJSON() {
            $('#Hidden1').val(JSON.stringify({
                field1: $('#CheckBox1').is(':checked'),
                field2: $('#CheckBox2').is(':checked'),
                field3: $('#text1').val()
            }));
        }

        $(document).ready(function () {
            $("#form1").validate({
                onsubmit: false,
                rules: {
                    text1: {
                        required: true,
                        digits: true
                    }
                }
            });

            $("#Button1").click(function (evt) {
                var isValid = $("#form1").valid();
                if (!isValid) evt.preventDefault();
            });
        });
    </script>
    </form>
</body>
</html>
using System;
using System.Web.Script.Serialization;

public class myClass
{
    public bool field1;
    public bool field2;
    public string field3;
}

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        var result = (myClass)(new JavaScriptSerializer()).Deserialize(Hidden1.Value, typeof(myClass));
    }
}
 类似资料:
  • 问题内容: 在PHP中,你只能将其用于和(查询字符串)变量。Python中的等效功能是什么? 问题答案: 假设你正在发布带有以下内容的html表单: 如果使用原始: 如果使用或: 使用: : : 如果使用或,还可以直接使用参数定义处理程序函数: 因此,你实际上必须选择这些框架之一。

  • 主要内容:命令行参数,set命令,使用数字值,局部与全局变量,使用环境变量批处理文件中有两种类型的变量。 其中一个参数是在调用批处理文件时可以传递的参数,另一个是通过命令完成的。 命令行参数 批处理脚本支持命令行参数的概念,其中参数可以在被调用时传递给批处理文件。参数可以通过变量,,等从批处理文件中调用。 以下示例显示了一个批处理文件,它接受3个命令行参数,并将它们回显到命令行屏幕。 如果上面的批处理脚本存储在一个名为的文件中,我们将运行该批处理 - 以下是批处理文件执

  • This tells Smarty how to handle PHP code embedded in the templates. There are four possible settings, default being SMARTY_PHP_PASSTHRU. Note that this does NOT affect php code within {php}{/php} tags

  • 问题内容: 我有一个Java应用程序,它需要显示大量数据(大约一百万个数据点)。数据并不需要全部同时显示,而仅在用户请求时才显示。该应用程序是桌面应用程序,未与应用程序服务器一起运行或未与任何集中式数据库连接。 我的想法是在计算机上运行数据库并在其中加载数据。在大多数时候,数据库都是只读的,因此我应该能够建立索引以帮助优化查询。如果我在本地系统上运行,则不确定是否应该尝试实现一些缓存(我不确定查询

  • hive怎么进行增量更新呢?看到很多人是先分区例如根据create_time分区。每天根据create_time 新增数据。但是如果我的数据是会经常变动的呢?例如去年的数据,今年修改了。我应该如何更新这条数据进去。假设我现在数据是上亿的,应该怎么处理。 假设数据初始数据: 1 2024-08-10 15:18:00.000 wang 2 2024-08-10 15:18:00.000 xxx 3

  • Bash 支持的字符串操作数量达到了一个惊人的数目。但可惜的是,这些操作工具缺乏一个统一的核心。他们中的一些是参数代换的子集,另外一些则是 UNIX 下 expr 函数的子集。这将会导致语法前后不一致或者功能上出现重叠,更不用说那些可能导致的混乱了。 字符串长度 ${#string} expr length $string 上面两个表达式等价于C语言中的 strlen() 函数。 expr "$s