Эффективный способ сериализации данных формы в .NET ASHX / C # из JQuery - PullRequest
0 голосов
/ 25 февраля 2010

Как и большинство людей, я читал множество примеров получения данных из формы (html) и возможности эффективно обрабатывать опубликованные данные, скажем, на странице ASHX (Generic Handler) ... и оттуда сказать обновить базу данных с помощью хранимой процедуры .. может быть, я пытаюсь автоматизировать вещи слишком много ?? !!

  1. Итак, у меня есть HTML-форма с, скажем, 50+ полями формы .. текст, флажки, комбо / выпадающие списки и т. Д.
  2. Когда я нажимаю «СОХРАНИТЬ», я хочу иметь возможность опубликовать эти значения, чтобы сказать страницу ASHX, которая, в свою очередь, будет ...
  3. На странице ASHX мне нужно либо выделить эти переданные значения формы для бизнес-объекта, либо сейчас просто добавить значения формы в качестве параметров хранимой процедуры для вставки в базу данных.

Теперь вместо того, чтобы строки кода получали каждое значение формы, а затем присваивали хранимой процедуре, есть ли упрощенный способ сделать это?

Я использую JQuery .. Я вижу функцию сериализации ..., но мне просто нужно знать, можно ли таким способом решить сквозное решение, или мне действительно нужно вручную получить значения и назначить их объект / хранимый процесс ....

Любая помощь высоко ценится!

1 Ответ

4 голосов
/ 25 февраля 2010

Вы начинаете с написания вашего универсального обработчика:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...