Asp.Net MVC에서 뷰와 컨트롤러의 데이터를 전달하는 방법 중 모델을 전달하는 방법 말고 3가지 방법이 더 있는데 뷰 백(View Bag), 뷰 데이터(View Data), 템프 데이터(Temp Data)가 있습니다. 각각을 어떻게 사용하는지 알아봅시다. 1. 각각의 용도 각각의 큰 특징은 다음과 같습니다. 1) 뷰백(ViewBag) 다이내믹(Dynamic) 오브젝트로 되어 있습니다. 직관적으로 사용할 수 있습니다. 자동으로 변수형을 유추하기 때문에 사용 시 형 변환이 필요 없습니다. 닷넷 프레임웍 3.5부터 사용할 수 있습니다. 2) 뷰데이터(ViewData) 딕셔너리(Dictionary) 콜랙션으로 되어 있습니다. 뷰백에 비해 속도가 빠릅니다. 값(Value)이 오브젝트로 나오기 때문에 형 변환..
Html Post 형식으로 데이터를 날렸더니 405 에러가 났습니다. 같은 도메인에 다른 사이트(가상 디렉터리나 응용 프로그램 등을 추가했을 때 )로 넘기면 405 에러가 난다는 겁니다. IIS 기본설정이 그렇게 돼 있기 때문에 수정하면 된다는데... 1. 일반적인 해결 방법 대표적인 수정방법은 아래와 같습니다. 참고 : somacon - How to Resolve an HTTP 405 Resource not allowed Error in IIS IIS7을 기준으로 보면 IIS > 설정할 웹사이트 > 기능 보기 > 처리기 매핑 로 들어가서 오른쪽 위에 작업에 있는 추가 메뉴 중 한 개를 선택하여 추가하시면 됩니다. 그전에 오류 내용을 확인해 봅시다. 오류를 준 처리기가 'StaticFile'입니다,. 이..
웹폼에서사용했던 안 보이는 버튼을 이용한 비하인드 함수 호출을 'ASP.NET MVC'에서도 사용할 수 있습니다. (참고 : [ASP.Net] 자바스크립트에서 비하인드 호출하기) 그런데 MS가 'ajax.net'을 포기하는 뉘앙스인 데다 MVC에서는 'ajax.net'를 사용하는데 번거로운 편이라 그냥 제이쿼리(JQuery)의 아작스(ajax)기능을 이용하여 비하인드 함수를 호출해 보겠습니다. 0. 테스트용 코드 테스트를 위해 HTML코드를 다음과 같이 작성합니다. 이렇게 코드를 작성했다면 다음과 같이 동작합니다. 비하인드 코드는 다음과 같이 작성합니다. [HttpPost] public JsonResult AjaxCall(string sData) { return Json(new { sReturn = "M..
이전 글에서 뷰 엔진에서 모델의 특정 속성을 가지고 오는 방법을 알려 드렸습니다. (참고 : [Asp.net MVC 4] 뷰 엔진에서 모델(Model)의 속성(Attribute) 표시하기 ) 그런데 'HtmlHelper'는 컨트롤러에서 사용할 수 없다고 했습니다. 결국 컨트롤러에서 해당 메서드를 사용하고 싶다면 'HtmlHelper'를 빼고 동작하는 메서드가 있어야 합니다. 1. 확장메서드 복습하기 전글에서 사용한 코드를 다시한번 보죠. using System.Linq.Expressions; namespace System.Web.Mvc.Html { public static class DisplayDescriptionExtensions { public static string GetDescription(t..
'레이저(Razor)'같은 뷰엔진에서 몇몇 속성은 이미 만들어져 있는 메서드를 가지고 출력이 가능합니다. 대표적인 메서드가 '@Html.DisplayNameFor'나 ''@Html.ValidationMessageFor같은 것들입니다. 문제는 정된 메서드만으로는 모든 속성을 표시할 수 없다는 점입니다. 1. 문제의 시작 다음과 같이 모델을 선언합시다. /// /// 단어 /// [DisplayName("단어")] [Required(ErrorMessage = "단어를 적어 주세요.")] [Display(Description = "문제로 쓰일 단어 입니다.")] public string Word { get; set; } 위 코드를 뷰로 보내서 바인딩한다면 '@Html.DisplayNameFor'를 사용하면 '..
제가 html과 css를 어느정도 다루기 때문에 UI관련된 프론트엔드툴을 쓸생각이 없었는데 모바일도 동일 페이지를 재공한다는 가정하에 레이아웃을 잡게 되면 이야기가 달라 집니다;;; 손봐야할 것들이 너무 많기 때문이죠;;; 그래서 유명한 웹 프론트엔드 도구인 부트스트랩(bootstrap)을 사용하기로 결정했습니다. 저 같이 디자이너를 따로 두지 않았는데 디자인 센스도 꽝이 개발자에게 이런 툴들을 여러가지면으로 좋습니다 ㅎㅎㅎ 0. 시작하기 전에... 재미있게도 누겟(NuGet)에는 이미 부트스트랩의 최신버전이 올라와 있습니다. 그런데 다운받아서 부스트랩 샘플을 돌려보니 레이아웃이 깨집니다-_-;;; 소스를 확인해보니 누겟으로 받은 부트스트랩파일에는 빠진파일이 몇게 있습니다 -_-a 그래서 결국 그냥 부트..
'ASP.NET MVC'를 공부하면서 느끼는 게 많은데..... 그런 건 집어치우고;; 'ASP.NET MVC'의 자습서나 기본 생성 템플릿은 이전과 많이 다른 인증 방식을 보여 주고 있습니다. 마이크로소프트가 어련히 잘해놨겠지만 찝찝한 것들도 많고;;; 어찌됐건 기존 쓰던 세션 방식을 사용하면서도 편리한 필터를 사용하기 위해서는 인증용 필터를 따로 만들어야 합니다. (기본 생성된 인증은..... 참고 자료일 뿐 완전히 고쳐야 합니다;;) 1. 필터 만들기 인증용 필터는 훈스닷넷에 풍술사님의 코드를 참고하여 만들었습니다. (참고 : [5조] Filter - AuthorizeAttribute) public enum UserType { Admin = 1, Staff = 2, User = 3, } public..