jQuery를 사용하여 복잡한 json 데이터를 asp.net Mvc에 전달 - ModelBinder_jquery
jQuery의 ajax 메소드를 호출할 때 jQuery는 post 또는 get 프로토콜에 따라 매개변수 데이터를 직렬화합니다.
제출된 데이터가 복잡한 json 데이터를 사용하는 경우(예:
{userId:32323, userName) :{firstName:"lee",lastName:"李大mouth"}}
이 경우 jQuery는 키-값 쌍 어셈블리를 사용하여 데이터를 직렬화하므로 서버가 전체 매개변수를 정상적으로 수신할 수 없습니다.
매개변수는 userId=32323&userName=object로 결합됩니다. userName이 가리키는 개체는 "object" 문자열로 직렬화됩니다.
복잡한 개체 개체를 제출하는 방법
먼저 매개변수 직렬화로 jQuery의 문제를 해결하세요.
/*문자열로 직렬화된 개체*/
String.toSerialize = function(obj) {
var ransferCharForJavascript = function(s) {
var newStr = s.replace(
/[x26x27x3Cx3Ex0Dx0Ax22x2Cx5Cx00]/g,
function(c) {
ascii = c.charCodeAt(0)
return '\u00' (ascii < 16 ? '0 ' ascii.toString( 16) : ascii.toString(16))
}
);
return newStr;
}
if (obj == null) {
return null
}
else if (obj.constructor == Array) {
var builder = [];
builder.push("[")
for (var index in obj) {
if ( typeof obj[index] == "function") continue;
if (index > 0) builder.push(",")
builder.push(String.toSerialize(obj[ index]));
}
builder.push("]");
return builder.join("")
}
else if (obj.constructor == Object) {
var builder = [];
builder.push("{");
var index = 0;
for (var key in obj) {
if (typeof obj[key ] == "함수 ") 계속;
if (index > 0) builder.push(",");
builder.push(String.format(""{0}":{1}" , key, String. toSerialize(obj[key])));
index ;
}
builder.push("}")
return builder.join(""); else if (obj.constructor == Boolean) {
return obj.toString();
}
else if (obj.constructor == Number) {
return obj.toString(); 🎜>}
else if (obj.constructor == String) {
return String.format('"{0}"', ransferCharForJavascript(obj))
}
else if (obj .constructor == Date) {
return String.format('{"__DataType":"Date","__thisue":{0}}', obj.getTime() - (new Date( 1970, 0, 1 , 0, 0, 0)).getTime());
}
else if (this.toString != undefine) {
return String.toSerialize(obj); }
jQuery 비동기 요청:
코드 복사
{ UserId: "22", UserName: { 이름: "323", 성: "2323" }, 키: ["xiaoming", "xiaohong"] },
{ UserId: "33", UserName: { 이름: "323", 성: " 2323" }, 키: ["xiaoming", "xiaohong"] }
];
$.post("Home/Test", { users: String.toSerialize(data) }, function(text) {
alert(String.toSerialize(text));
}, "json");
})
})
데이터를 제출하고 모니터링하려면 브라우저에서 제출된 데이터가 json 객체의 직렬화된 콘텐츠임을 확인할 수 있습니다.
코드 복사
콘텐츠 유형: application/x-www-form-urlencoded
수락-인코딩: gzip, deflate
사용자 에이전트: Mozilla /4.0(호환; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4 .NET4.0E)
호스트: localhost:3149
콘텐츠 길이: 501
연결: 연결 유지
캐시 제어: 캐시 없음
쿠키: CookieGlobalLoginUserID=16063
users=[{"UserId":"11","Name":{"FirstName":"323","LastName":"2323"},"Keys":["xiaoming ","xiaohong"] },{"UserId":"22","이름":{"FirstName":"323","LastName":"2323"},"Keys":["xiaoming","xiaohong "]},{" UserId":"33","이름":{"FirstName":"323","LastName":"2323"},"Keys":["xiaoming","xiaohong"]}]
둘째, 백그라운드 서버는 매개변수 바인딩을 처리합니다.
System.Collections.Generic 사용;
System.Web.Mvc 사용;
Newtonsoft.Json.Linq 사용
WebOS.Controllers 사용
🎜>[ HandleError]
공용 클래스 HomeController : 컨트롤러
{
///
/// 테스트 방법
///
///
{
return Json(users, JsonRequestBehavior.AllowGet)
}
}
///
///
[JsonObject]
공용 클래스 사용자
{
[JsonProperty("UserName")]
공용 사용자 이름 이름 { get; set; }
[JsonProperty("UserId")]
공개 문자열 UserId { get; set }
[JsonProperty("Keys")]
공개 목록
}
///
/// 객체 엔터티
///
[JsonObject]
공개 클래스 UserName
{
[JsonProperty("FirstName")]
공개 문자열 FirstName { get; set }
[JsonProperty("LastName")]
공개 문자열 LastName }
}
///
/// Json 데이터 바인딩 클래스
///
공용 클래스 JsonBinder
{
공용 객체 BindModel(ControllerContext ControllerContext, ModelBindingContext BindingContext)
{
//요청에서 제출된 매개변수 데이터 가져오기
var json = ControllerContext.HttpContext.Request.Form[bindContext.ModelName] as string;
//제출 매개변수는 객체입니다
if (json.StartsWith("{") && json.EndsWith("} " ))
{
JObject jsonBody = JObject.Parse(json);
JsonSerializer js = new JsonSerializer();
object obj = js.Deserialize(jsonBody.CreateReader(), typeof(T) ) );
return obj;
}
//제출 매개변수는 배열입니다
if (json.StartsWith("[") && json.EndsWith("]"))
{
IList
JArray jsonRsp = JArray.Parse(json)
if (jsonRsp != null)
{
for ( int i = 0; i < jsonRsp.Count; i )
{
JsonSerializer js = new JsonSerializer()
object obj = js.Deserialize(jsonRsp[i].CreateReader(), T)) ;
list.Add((T)obj);
}
}
return list;
}
return null; 🎜>}
프런트 엔드는 백그라운드에서 반환된 데이터를 가져오고 결과는 사용자가 제출한 데이터입니다.
백그라운드 json 역직렬화는 Newtonsoft를 사용합니다. .Json 구성 요소에 대한 자세한 내용은
http://james.newtonking.com/
을 참조하세요.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

jQuery 참조 방법에 대한 자세한 설명: 빠른 시작 가이드 jQuery는 웹 사이트 개발에 널리 사용되는 JavaScript 라이브러리로, JavaScript 프로그래밍을 단순화하고 개발자에게 풍부한 기능을 제공합니다. 이 기사에서는 jQuery의 참조 방법을 자세히 소개하고 독자가 빠르게 시작할 수 있도록 구체적인 코드 예제를 제공합니다. jQuery 소개 먼저 HTML 파일에 jQuery 라이브러리를 도입해야 합니다. CDN 링크를 통해 소개하거나 다운로드할 수 있습니다.

jQuery에서 PUT 요청 방법을 사용하는 방법은 무엇입니까? jQuery에서 PUT 요청을 보내는 방법은 다른 유형의 요청을 보내는 것과 유사하지만 몇 가지 세부 사항과 매개 변수 설정에 주의해야 합니다. PUT 요청은 일반적으로 데이터베이스의 데이터 업데이트 또는 서버의 파일 업데이트와 같은 리소스를 업데이트하는 데 사용됩니다. 다음은 jQuery에서 PUT 요청 메소드를 사용하는 구체적인 코드 예제입니다. 먼저 jQuery 라이브러리 파일을 포함했는지 확인한 다음 $.ajax({u를 통해 PUT 요청을 보낼 수 있습니다.

소개 오늘날 빠르게 발전하는 디지털 세계에서는 강력하고 유연하며 유지 관리가 가능한 웹 애플리케이션을 구축하는 것이 중요합니다. PHPmvc 아키텍처는 이러한 목표를 달성하기 위한 이상적인 솔루션을 제공합니다. MVC(Model-View-Controller)는 애플리케이션의 다양한 측면을 독립적인 구성 요소로 분리하는 널리 사용되는 디자인 패턴입니다. MVC 아키텍처의 기초 MVC 아키텍처의 핵심 원칙은 관심사 분리입니다. 모델: 애플리케이션의 데이터와 비즈니스 로직을 캡슐화합니다. 보기: 데이터 표시 및 사용자 상호 작용 처리를 담당합니다. 컨트롤러: 모델과 뷰 간의 상호 작용을 조정하고 사용자 요청과 비즈니스 로직을 관리합니다. PHPMVC 아키텍처 phpMVC 아키텍처는 전통적인 MVC 패턴을 따르지만 언어별 기능도 도입합니다. 다음은 PHPMVC입니다.

제목: jQuery 팁: 페이지에 있는 모든 태그의 텍스트를 빠르게 수정하세요. 웹 개발에서는 페이지의 요소를 수정하고 조작해야 하는 경우가 많습니다. jQuery를 사용할 때 페이지에 있는 모든 태그의 텍스트 내용을 한 번에 수정해야 하는 경우가 있는데, 이는 시간과 에너지를 절약할 수 있습니다. 다음은 jQuery를 사용하여 페이지의 모든 태그 텍스트를 빠르게 수정하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 먼저 jQuery 라이브러리 파일을 도입하고 다음 코드가 페이지에 도입되었는지 확인해야 합니다. <

제목: jQuery를 사용하여 모든 태그의 텍스트 내용을 수정합니다. jQuery는 DOM 작업을 처리하는 데 널리 사용되는 인기 있는 JavaScript 라이브러리입니다. 웹 개발을 하다 보면 페이지에 있는 링크 태그(태그)의 텍스트 내용을 수정해야 하는 경우가 종종 있습니다. 이 기사에서는 jQuery를 사용하여 이 목표를 달성하는 방법을 설명하고 구체적인 코드 예제를 제공합니다. 먼저 페이지에 jQuery 라이브러리를 도입해야 합니다. HTML 파일에 다음 코드를 추가합니다.

MVC 아키텍처(Model-View-Controller)는 코드를 구성하고 WEB 애플리케이션 개발을 단순화하기 위한 명확한 구조를 제공하기 때문에 PHP 개발에서 가장 널리 사용되는 패턴 중 하나입니다. 기본 MVC 원칙은 대부분의 웹 애플리케이션에 충분하지만 복잡한 데이터를 처리하거나 고급 기능을 구현해야 하는 애플리케이션에는 몇 가지 제한 사항이 있습니다. 모델 계층 분리 모델 계층을 분리하는 것은 고급 MVC 아키텍처에서 일반적인 기술입니다. 여기에는 모델 클래스를 더 작은 하위 클래스로 나누는 작업이 포함되며, 각 하위 클래스는 특정 기능에 중점을 둡니다. 예를 들어 전자 상거래 애플리케이션의 경우 기본 모델 클래스를 주문 모델, 제품 모델 및 고객 모델로 나눌 수 있습니다. 이러한 분리는 코드 유지 관리성과 재사용성을 향상시키는 데 도움이 됩니다. 의존성 주입 사용

jQuery를 사용하여 요소의 높이 속성을 제거하는 방법은 무엇입니까? 프런트엔드 개발에서는 요소의 높이 속성을 조작해야 하는 경우가 종종 있습니다. 때로는 요소의 높이를 동적으로 변경해야 할 수도 있고 요소의 높이 속성을 제거해야 하는 경우도 있습니다. 이 기사에서는 jQuery를 사용하여 요소의 높이 속성을 제거하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. jQuery를 사용하여 높이 속성을 연산하기 전에 먼저 CSS의 높이 속성을 이해해야 합니다. height 속성은 요소의 높이를 설정하는 데 사용됩니다.

jQuery는 웹 페이지에서 DOM 조작 및 이벤트 처리를 처리하는 데 널리 사용되는 인기 있는 JavaScript 라이브러리입니다. jQuery에서 eq() 메서드는 지정된 인덱스 위치에서 요소를 선택하는 데 사용됩니다. 구체적인 사용 및 적용 시나리오는 다음과 같습니다. jQuery에서 eq() 메서드는 지정된 인덱스 위치에 있는 요소를 선택합니다. 인덱스 위치는 0부터 계산되기 시작합니다. 즉, 첫 번째 요소의 인덱스는 0이고 두 번째 요소의 인덱스는 1입니다. eq() 메소드의 구문은 다음과 같습니다: $("s
