Использование jQuery для сериализации в ASP.NET

#c# #jquery #asp.net #serialization

#c# #jquery #asp.net #сериализация

Вопрос:

как используется jQuery Serialize API в ASP.NET ? как мы можем это использовать? Возможно ли преобразовать сериализованный объект в объект строгого типа .NET? Или сопоставить сериализованный объект с into .ЧИСТЫЙ эквивалентный объект? например, у нас есть два поля в таблице ‘member’. Имя, возраст. итак, у нас есть эти свойства в сущности-члене ;

     public string Name { get; set; }
public string Age { get; set; }
  

И у нас есть эти коды в нашем уровне представления :

        <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
        <asp:TextBox ID="txtAge" runat="server"></asp:TextBox>
        <asp:Button ID="btnSave" runat="server" Text="Button" />
  

Когда я сериализую форму, используя этот код :

 $.fn.serializeNoViewState = function()
{
    return this.find("input,textarea,select,hidden")
               .not("[type=hidden][name^=__]")
               .serialize();    
}
  

сериализованный объект будет выглядеть следующим образом :

 ctl00$MainContent$txtName=Pitteramp;ctl00$MainContent$txtAge=20
  

итак, это строка или объект JSON? Я думаю, что это строка.
и теперь, каковы преимущества этого сериализованного вывода для нас?
Я знаю, что мы можем передать этот вывод на сервер с помощью jQuery AJAX. но как мы можем использовать это на стороне сервера?

Комментарии:

1. Пожалуйста, сообщите мне, если мой вопрос неясен или требуется дополнительная информация.

Ответ №1:

Как объясняется в документации, методу .serialize() передается элемент формы DOM, и он преобразует его в кодированную URL строку пар ключ / значение, которую вы могли бы передать на сервер. Но если вы хотите работать со строго типизированными объектами в ASP.NET вы могли бы взглянуть на методы страницы. Например, предположим, что вы определили следующий тип:

 public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
  

тогда у вас мог бы быть метод page:

 public partial class _Default : Page 
{
    [WebMethod]
    public static string Process(Person person)
    {
         // TODO: do some processing
         return DateTime.Now.ToString();
    }

    ...
}
  

и для вызова этого метода с использованием jQuery и запроса JSON:

 $.ajax({
    type: 'POST',
    url: 'Default.aspx/Process',
    data: JSON.stringify({
        name: 'foo', // you could fetch those values dynamically
        age: 25
    }),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function(msg) {
        // msg.d will contain the object returned from the server
        // in our example it's a simple string but you could use any
        // complex type you like (well almost any, it must be JSON serializable)
        alert(msg.d);
    }
});
  

Комментарии:

1. Спасибо. было так полезно. вы прокомментировали ‘// вы могли бы извлекать эти значения динамически’, не могли бы вы, пожалуйста, описать подробнее?

2. @shaahin, я имел в виду, что вы могли бы привязать эти параметры к полям ввода в вашей форме. Например: name: $('.name').val() . В этом примере я использую селектор класса как ASP.NET искажает имена и идентификаторы входных элементов.