C \ # 학습 노트 - C \ # 중 JSon. Net (newtonjs) 사용
5484 단어 C \ # 학습 노트
1. 전통 적 인 방식 에서 제 이 슨 이 프론트 데스크 에 데 이 터 를 전송 하 는 작업
1. MVC 프로젝트 를 새로 만 들 고 Models 폴 더 에 실체 클래스 Person. cs 를 추가 합 니 다. 자세 한 코드 는 다음 과 같 습 니 다.
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime BirthDate { get; set; }//
}
2. 컨트롤 러 Default Controller 를 추가 하고 컨트롤 러 에 과부하 관계 가 있 는 action 두 개 를 추가 합 니 다.action 의 이름 은 모두 TestJSon 입 니 다. 자세 한 코드 는 다음 과 같 습 니 다.
[HttpGet]
public ActionResult TestJson()
{
return View();
}
[HttpPost]
public ActionResult TestJson(FormCollection fc)
{
Person per = new Person() { BirthDate = DateTime.Now, Id = 5, Name = " " };
return Json(Person);
}
주의: 이곳 의 FormCollection fc 는 이번 연습 에서 아무런 의미 가 없 으 며, 단지 두 가지 방법 으로 무 거 운 짐 을 구성 하기 위해 서 입 니 다.[HttpGet] 과 [HttpPost] 의 용법 을 잘 아 는 사람 은 이곳 이 무 거 운 짐 을 구성 하 는 장점 이 무엇 인지 알 아야 한다. 여 기 는 상세 하 게 설명 하지 않 겠 다.
3. 보기 TestJSon. cshtml 를 추가 하여 보기 에 jquery - 1.8.3. js 파일 을 도입 합 니 다. ajax 로 데 이 터 를 제출 하고 받 아야 하기 때 문 입 니 다.중요 코드 는 다음 과 같 습 니 다.
$(function () {
$("#btn1").click(function () {
$.ajax({
url: "/Default/TestJson", dataType: "json", type: "post",
success: function (data) {
alert(data.Name);
alert(data.BirthDate);
}, error: function () {
alert('error json');
}
});
});
});
4. 항목 을 실행 합 니 다. 테스트 에 오류 가 없 으 면 Name 과 BirthDate 의 정 보 를 순서대로 팝 업 창 에 표시 합 니 다.
5. 위 는 일반적인 제 이 슨 이 데 이 터 를 전달 하 는 방식 이다.이제 제 이 슨 넷 (즉 뉴 톤 js) 으로 제 이 슨 데 이 터 를 전달 합 니 다.위의 코드 는 여전히 보존 되 어 있 으 니, 잠시 후에 부분 수정 을 하 겠 습 니 다.
둘째, JSon. Net (즉 newtonjs) 로 JSon 데 이 터 를 전달 합 니 다.
1. 프로젝트 에 JSon. Net 을 명령 으로 설치 하고 패키지 관리자 콘 솔 에 명령 을 입력 합 니 다.
Install-Package newtonsoft.json
MVC 프로젝트 에 필요 한 파일 을 설치 합 니 다.물론 이 동작 을 대체 하 는 간단 한 방법 도 있다. 라 이브 러 리 파일 인 Newtonsoft. JSon. dll 을 직접 인용 하 는 것 도 같은 효 과 를 거 둘 수 있다.파일 다운로드 주소:https://www.newtonsoft.com/json
2. JSonNetResult. cs 클래스 를 새로 만 들 고 JSonResult. cs 클래스 에서 계승 합 니 다.실제로 JSonResult. cs 클래스 의 정의 로 넘 어가 면 이 클래스 가 Action Result 클래스 에서 계승 되 는 것 을 볼 수 있 기 때문에 여 기 는 JSonResult 클래스 에서 계승 되 며 사용자 정의 Action Result 에 해당 합 니 다.아래 의 코드 는 외 워 쓸 필요 가 없습니다. 사용 할 줄 만 알 면 됩 니 다. 상세 한 코드 는 다음 과 같 습 니 다.
public class JsonNetResult : JsonResult
{
public JsonNetResult()
{
Settings = new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
DateFormatString = "yyyy-MM-dd HH:mm:ss",
ContractResolver = new
Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
};
}
public JsonSerializerSettings Settings { get; private set; }
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
if (this.JsonRequestBehavior == JsonRequestBehavior.DenyGet
&& string.Equals(context.HttpContext.Request.HttpMethod, "GET",
StringComparison.OrdinalIgnoreCase))
{
throw new InvalidOperationException("JSON GET is not allowed");
}
HttpResponseBase response = context.HttpContext.Response;
response.ContentType = string.IsNullOrEmpty(this.ContentType) ?
"application/json" : this.ContentType;
if (this.ContentEncoding != null)
{
response.ContentEncoding = this.ContentEncoding;
}
if (this.Data == null)
{
return;
}
var scriptSerializer = JsonSerializer.Create(this.Settings);
scriptSerializer.Serialize(response.Output, this.Data);
}
}
3. TestJSon. cshtml 보기에 서 두 속성의 이니셜 을 소문 자로 변경 합 니 다.백 스테이지 에서 처 리 된 제 이 슨 형식의 내용 에서 속성의 이니셜 은 모두 소문 자로 바 뀌 었 기 때문에 프론트 데스크 도 이에 상응하는 변경 을 해 야 한다.자세 한 변경 코드 는 다음 과 같 습 니 다.
alert(data.name); alert(data.birthDate);
4. [HttpPost] 의 TestJSon 방법 을 표시 하고 return JSon (Person) 을 표시 합 니 다.return new JSonNetResult () {Data = per} 로 변경;이 때 다시 실행 하면 name 의 값 을 출력 할 수 있 을 뿐만 아니 라 birthDate 의 값 도 정상 적 인 날짜 형식 으로 변 환 된 것 을 발견 할 수 있 습 니 다.
5. 【 보충 】
JsonNetResult. cs 클래스 에 DateFormattString = "yyy - MM - dd HH: mm: ss" 가 있 습 니 다. 이 문자열 의 형식 은 날짜 형식 으로 바 꿀 것 입 니 다. 여 기 는 완전한 년 월 일 분 초 입 니 다. 물론 원 하 는 날짜 형식 으로 바 꿀 수 있 습 니 다. 예 를 들 어 년 월 일 형식 만 있 으 면 yy - MM - dd 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C \ # 학습 노트 - C \ # 중 JSon. Net (newtonjs) 사용우선 뉴 튼 제 이 슨 에 대해 간단히 알 아 보 겠 습 니 다.MVC 프로젝트 가 있다 고 가정 하면 전통 적 으로 프론트 데스크 에 JSon 의 데 이 터 를 전송 합 니 다. 예 를 들 어 '/ Date (15...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.