#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 искажает имена и идентификаторы входных элементов.