ActionResult 소스 분석 노트

3769 단어
ActionResult는 추상 클래스입니다.
    public abstract class ActionResult
    {
        public abstract void ExecuteResult(ControllerContext context);
    }

 
ActionResult의 실현 클래스는 모두 Response 대상을 조작하여 서로 다른 출력을 실현한다
ActionResult의 구현 클래스:
JsonResult:
기본적으로 Get 액세스가 금지되므로 Get 요청에 AllowGet 매개 변수를 추가해야 합니다.
response.ContentType = "application/json";
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
javaScriptSerializer.Serialize(Data)

ContentResult:
response.Write(Content);

EmptyResult:
      ~

RedirectResult:
context.HttpContext.Response.Redirect(url, false);

NotFound:
context.HttpContext.Response.StatusCode = 404;

HttpStatusCodeResult: 동일
HttpUnauthorizedResult:권한이 없음, 위
FileResult:파일, 다시 로드
//    
response.OutputStream.Write(FileContents, 0, FileContents.Length);
// 
Stream outputStream = response.OutputStream;
            using (FileStream)
            {
                byte[] buffer = new byte[4096];
                while (true)
                {
                    int num = FileStream.Read(buffer, 0, 4096);
                    if (num != 0)
                    {
                        outputStream.Write(buffer, 0, num);
                        continue;
                    }
                    break;
                }
            }

JavaScriptResult:
HttpResponseBase response = context.HttpContext.Response;
response.ContentType = "application/x-javascript";
if (Script != null)
{
  response.Write(Script);
}

ViewResult
           ,    WebViewPage    ,       (ViewData、Model..),      RenderView()  ,     output  

좋은 웹페이지 즐겨찾기