ASP. NET MVC 의 Controller 에 다양한 유형의 데 이 터 를 출력 하도록 합 니 다.

2233 단어 controller
ASP. NET MVC 에 서 는 서로 다른 유형의 Action Result 로 다른 내용 을 출력 할 수 있 습 니 다. 예 를 들 어 ViewResult 는 보기 페이지 를 출력 하고 JSonResult 는 JSon 데 이 터 를 출력 합 니 다.
같은 컨트롤 러 가 다른 유형의 출력 을 지원 해 야 하 는 경우 도 있 습 니 다. 예 를 들 어 사용자 의 자료 페이지 를 정상적으로 볼 때 / User / {id} 로 접근 할 수 있 습 니 다.자 바스 크 립 트 나 다른 시스템 에서 사용자 자 료 를 볼 필요 가 있 으 며, / User / {id} 이 JSon 데 이 터 를 되 돌려 주 기 를 바 랍 니 다.이러한 상황 은 사용자 정의 ActionResult 를 구축 하여 이 루어 질 수 있 습 니 다. 매개 변수 에 따라 기본 ViewResult 로 돌아 가 거나 Model 을 지정 한 형식 으로 출력 하 는 것 이 모델 의 출력 행 위 를 제어 하 는 것 입 니 다.출력 형식의 인 자 는 두 가지 방식 으로 전달 할 수 있 습 니 다. 전통 적 인 Get 또는 Post 참조: / User / {id}?rtype=json;다른 하 나 는 Http 가 요청 한 ContentType 인 자 를 통 해 형식 을 지정 할 수 있 습 니 다: request. contentType = "json".
참고 코드 첨부:
    public class AutoResult : ActionResult

    {

        public string ViewName { get; set; }

        public object Model { get; set; }



        public override void ExecuteResult(ControllerContext context)

        {

            string type = context.HttpContext.Request["rtype"];

            if (string.IsNullOrEmpty(type))

            {

                type = context.HttpContext.Request.ContentType;

            }



            if (!string.IsNullOrEmpty(type))

            {

                switch (type.ToLower())

                {

                    case "json":

                        new NJsonResult(Model).ExecuteResult(context);

                        break;

                    case "binary":

                        new BinaryResult(Model).ExecuteResult(context);

                        break;

                    case "xml":

                        new XmlResult(Model).ExecuteResult(context);

                        break;

                    default:

                        context.HttpContext.Response.Output.Write("       ");

                        break;

                }

            }

            else

            {

                context.Controller.ViewData.Model = Model;

                ViewResult viewResult = new ViewResult() { ViewName = ViewName, ViewData = context.Controller.ViewData };

                viewResult.ExecuteResult(context);

            }

        }

    }

좋은 웹페이지 즐겨찾기