어떻게 Asp.Net 코어 MVC 에서 null 값 의 실현 을 처리 합 니까?
전통 적 인 asp.net mvc 는.net core 의 asp.net core mvc 에 대응 하여 asp.net core mvc 를 이용 하여 크로스 플랫폼 을 구축 할 수 있 고 확장 가능 하 며 고성능 웹 응용 과 api 인 터 페 이 스 를 구축 할 수 있 습 니 다.
프로그래머 들 은 결벽 증 이 있 습 니 다.빈 response 로 돌아 가 는 request 요청 이나 일부 action 에서 null value 로 돌아 가 는 경우,일반적으로 asp.net core mvc 는 http status 204(No Content)로 돌아 갑 니 다.action 에서 null value 로 돌아 가 는 기본 행동 을 수정 하려 고 합 니 다.
이 편 을 실행 하려 면 Visual Studio 2019 를 설치 해 야 합 니 다.설치 되 지 않 으 면 홈 페이지 에 설치 할 수 있 습 니 다https://www.infoworld.com/article/3434624/how-to-handle-null-values-in-aspnet-core-mvc.html 또는 로 컬 다운로드https://visualstudio.microsoft.com/downloads/
Asp.NET Core 에 Controller 를 새로 만 듭 니 다.
솔 루 션 창 에 있 는 Controller 폴 더 에서 오른쪽 단 추 를 누 르 고 Add->Controller 를 선택 하여 새 Controller 를 만 듭 니 다.이 Controller 의 이름 을 DemoController 로 지정 하고 다음 코드 로 DemoController 를 교체 합 니 다.
[Route("api/[controller]")]
[ApiController]
public class DemoController : ControllerBase
{
readonly Repository repository = new Repository();
[HttpGet]
public ActionResult Get()
{
string item = repository.GetMessage();
return Ok(item);
}
[HttpGet("{id}", Name = "Get")]
public IActionResult Get(int id)
{
string item = repository.GetMessage();
return Ok(item);
}
}
Repository 만 들 기다음은 Repository 클래스 입 니 다.null 로 돌아 가 는 GetMessage 방법 이 포함 되 어 있 습 니 다.물론 이것 은 단지 목적 을 보 여 주 는 것 입 니 다.
public class Repository
{
public string GetMessage()
{
return null;
}
}
asp.net core mvc 에서 null 값 을 어떻게 처리 합 니까?httpGet 방식 으로 DemoController 의 GetMessage 방법 을 요청 하면 뮤 직 비디오 는 Http Status 204(No Content)로 돌아 갑 니 다.다음 그림 과 같 습 니 다.
왜 이러 지?response 가 되 돌아 갈 준 비 를 할 때 asp.net core mvc 는 현재 사용 가능 한 포맷 기 목록 에서 현재 response 대상 을 처리 할 적당 한 대상 을 선택 합 니 다.예 를 들 어 이 포맷 기 는 JSon formatter 일 수도 있 고 Xml formatter 일 수도 있 으 며 이 소스 에 적합 한 formatter 일 수도 있 습 니 다.
참,null 값 을 만 났 을 때 asp.net core 뮤 직 비디오 프레임 워 크 는 HttpNoContent OutputFormatter 라 는 이름 을 사용 합 니 다.null 을 Http Status 204(No Content)로 전환 하 는 것 이 직책 입 니 다.다음은 소스 코드 구현 을 보 여 줍 니 다.
public class HttpNoContentOutputFormatter : IOutputFormatter
{
public Task WriteAsync(OutputFormatterWriteContext context)
{
HttpResponse response = context.HttpContext.Response;
response.ContentLength = 0L;
if (response.StatusCode == 200)
{
response.StatusCode = 204;
}
return Task.CompletedTask;
}
}
HttpNoContentOutput Formatter 사용 하지 않 기궁금 하 시 면 HttpNoContentOutputFormatter 를 사용 하지 않 으 셔 도 됩 니 다.asp.net mvc core 에서 null 값 을 처리 하 는 기본 동작 을 차단 합 니 다.이렇게 하려 면 Startup 류 Configure Services 방법 에서 다음 과 같이 설정 하 십시오.
services.AddMvc(f =>
{
f.OutputFormatters.RemoveType
(typeof(HttpNoContentOutputFormatter));
f.OutputFormatters.Insert(0, new
HttpNoContentOutputFormatter
{
TreatNullValueAsNoContent = false
});
});
위의 코드 는 http status 204 의 행동 을 사용 하지 않 습 니 다.대신 http status 200(OK)을 되 돌려 주 고 null 값 은 response body 에 삽 입 됩 니 다.Asp.Net Core 에서 http status 404 를 되 돌려 줍 니 다.
404 효 과 를 얻 기 위해 action 의 이름 을 업데이트 하 겠 습 니 다.다음은 DemoController 가 업데이트 한 코드 세 션 입 니 다.
[Route("api/[controller]")]
[ApiController]
public class DemoController : ControllerBase
{
readonly Repository repository = new Repository();
[HttpGet]
public ActionResult Get()
{
string item = repository.GetMessage();
if (item == null)
return NotFound();
return Ok(item);
}
}
DemoController 를 다시 요청 할 때 프레임 워 크 는 http status 404(Not Found)로 돌아 갑 니 다.아래 그림 과 같 습 니 다.http 404 를 되 돌려 주 는 더 완벽 한 방법
http status 404 를 더 잘 되 돌려 주 는 방법 은 action filter 나 result filter 를 사용 하 는 것 입 니 다.다음 코드 는:
public class NotFoundActionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext context)
{
if (context.Result is ObjectResult)
{
ObjectResult objectResult = context.Result
as ObjectResult;
if (objectResult.Value == null)
context.Result = new NotFoundResult();
}
}
}
이 필 터 를 action 단계,controller 단계 또는 전역 단계 에 놓 을 수 있 습 니 다.전역 단계 에 놓 으 려 면 Startup 의 Configure Services 방법 에 다음 코드 를 추가 할 수 있 습 니 다.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(f =>
{
f.Filters.Add(new NotFoundResultFilterAttribute());
});
}
asp.net core 뮤 직 비디오 를 사용 할 때 action 반환 값 에서 IAction Result 나 Action Result그러나 action 이 null 값 을 되 돌 릴 때 asp.net core 뮤 직 비디오 는 이 null 값 을 사용 가능 한 직렬 화 기 를 사용 하여 처리 하려 고 하지 않 습 니 다.다시 말 하면 프레임 워 크 는 Http status 204 로 돌아 가 요청 은 성공 적 이지 만 내용 이 없 음 을 표시 합 니 다.다행히도 이 기본 행동 을 변경 할 수 있 습 니 다.
Asp.Net Core MVC 에서 null 값 을 처리 하 는 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 Asp.Net Core MVC 처리 null 값 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
easyui 내 보 내기 excel 다운로드 상 자 를 꺼 낼 수 없 는 해결 방법이전에 ajax 로 만 든 코드 는 다음 과 같 습 니 다 (ActionUrl 은 일반 처리 프로그램 ashx 의 경로 입 니 다). 다운로드 상 자 를 팝 업 할 수 없습니다. 직접 브 라 우 저 주소 표시 줄 에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.