从JQuery将表单数据序列化为.NET ASHX / C#的有效方法

时间:2010-02-25 08:23:18

标签: c# .net jquery forms serialization

与大多数人一样,我看过很多从表单(html)获取数据的例子,并且能够有效地处理发布的数据,如ASHX(Generic Handler)页面中所说的......并且从那里说通过存储过程更新数据库..也许我试图自动化太多的东西? !!

  1. 所以我有一个包含50多个表单字段的HTML表单..文本,复选框,组合/下拉菜单等
  2. 当我点击“保存”时,我希望能够发布这些值来说出一个ASHX页面,而这个页面又将...
  3. 在ASHX页面中,我需要将传递的表单值分配给业务对象,或者现在,只需将表单值作为参数添加到存储过程以插入数据库。
  4. 现在不是让代码行获取每个表单值,然后分配给存储过程,是否有一种简化的方法呢?

    我正在使用JQuery ..我看到了序列化函数..但只需要知道端到端解决方案是否可以这样做,或者如果我确实必须手动检索值,并将它们分配给对象/存储过程....

    非常感谢任何帮助!

1 个答案:

答案 0 :(得分:4)

首先编写通用处理程序:

public class TestHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        using (var connection = new SqlConnection(ConnectionString))
        using (var command = connection.CreateCommand())
        {
            connection.Open();
            command.CommandText = "NameOfYourSP";
            command.CommandType = CommandType.StoredProcedure;
            foreach (string name in context.Request.Form.Keys)
            {
                command.Parameters.AddWithValue("@" + name, context.Request.Form[name]);
            }
            command.ExecuteNonQuery();
        }
        context.Response.ContentType = "text/plain";
        context.Response.Write("success");
    }

    public bool IsReusable
    {
        get { return false; }
    }
}

您可以这样称呼:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Test</title>
    <script type="text/javascript" src="jquery-1.4.1.js"></script>
    <script type="text/javascript">
    $(function() {
        $('a').click(function() {
            $.ajax({
                url: '/testhandler.ashx',
                data: $('form').serialize(),
                type: 'POST',
                success: function(data) {
                    alert(data);
                }
            });
        });
    });
    </script>
</head>
<body>

<form action="/test.ashx" method="post">
    <input type="text" name="param1" value="value1" /><br/>
    <input type="text" name="param2" value="value2" /><br/>
    <input type="text" name="param3" value="value3" /><br/>
</form>

<a href="#">Submit data</a>

</body>
</html>