본문 바로가기

개발/ASP.NET35

ASP.NET MVC : 비연속의 Array 요소를 Model에 바인딩 시키기 과제 프론트 엔드 측에서 특정의 조건일때만 input 항목을 생성시켜 입력값을 넘겨 받는데 그 입력 항목이 배열일 경우에는 name값의 순서가 연속성을 가지지 않기 때문에 Model에 바인딩 되지 않는 경우가 있었습니다. 해결방법 각각의 입력 요소인 <input type=”text” name=”Items[0].Name”> 의 앞에 <input type=”hidden” name=”Items.Index” value=”0” /> 를 추가 하는 것으로 비연속적인 index를 가지고 있는 배열 값이라도 정상적으로 Model에 바인딩 되는것을 확인하였습니다. 확인한 MVC버젼은 5입니다. View (.cshtml 확장자) Model public class TestModel { public List Items { g.. 2019. 1. 23.
메일 수신과 삭제 with OpenPoP.NET Open Pop.NET http://hpop.sourceforge.net/ OpenPop.NET은 C#으로 이메일을 제어 가능한 라이브러리입니다. 아래는 OpenPop.NET을 이용해서 메일의 수신과 삭제를 실행하는 부분을 정리한 내용입니다. 메일 수신과 삭제 기능의 호출 부분 using (Pop3Client pop3Client = GetPop3Client()) { var pop3 = new Pop3Mail(); List receivedMailList = pop3.ReceiveMails(pop3Client); pop3.DeleteMessageByMessageId(client, 1); // MessageId } Pop3Client생성 public static Pop3Client GetPop3Client().. 2019. 1. 21.
log4net의 버젼 차이에 따른 문제 해결 log4net 버젼 차이에 따른 문제 프로젝트 A : 새로운 프로젝트. 당연히 log4net도 최신 버젼을 도입합니다. 하지만 프로젝트 B의 비지니스 로직을 참고해야 합니다... log4net 버젼 : 1.2.15.0 프로젝트 B : 공통 비지니스 로직을 포함하고 있는 오래된 프로젝트로 log4net의 버젼도 당연히 옛날 버젼 입니다... log4net 버젼 : 1.2.10.0 … 그리고 상기의 사양대로 코딩을 했더니 프로젝트 A가 단독으로 움직일때는 문제가 없지만 프로젝트 B의 로직을 호출(Add References로 dll 참조)하면 프로젝트 B에서 로그를 출력하는 타이밍에서 에러가 발생했습니다. 에러 메세지 Could not load file or assembly 'log4net, Version=1.. 2019. 1. 21.
timestamp/DateTime에서 현재시간을 기준으로 경과시간을 취득 DateTime에서 경과시간을 취득 public static string GetLapsedTimeFromDateTime(DateTime dt) { string timeString = string.Empty; TimeSpan ts = DateTime.Now.Subtract(dt); int DayPeriod = Math.Abs(ts.Days); if (DayPeriod < 1) { int HourPeriod = Math.Abs(ts.Hours); if (HourPeriod < 1) { int MinutePeriod = Math.Abs(ts.Minutes); if (MinutePeriod < 1) { int SecondPeriod = Math.Abs(ts.Seconds); return SecondPeriod... 2019. 1. 21.
EPPlus 템플릿 파일을 사용해서 엑셀파일을 작성 using System.IO; using OfficeOpenXml; // 사전에 수식등이 설정되어 있는 엑셀 파일(템플릿 파일)을 기반으로 // DB등에서 취득한 값을 지정한 셀에 설정하여 byte[]를 엑셀로 다운로드 시킬 경우 byte[] source; MemoryStream stream = new MemoryStream(); using (var template = System.IO.File.OpenRead(AppDomain.CurrentDomain.BaseDirectory + "/App_Data/template.xlsx")) using (var package = new ExcelPackage(stream, template)) { ExcelWorksheet worksheet = null; worksh.. 2019. 1. 16.
EPPlus로 엑셀파일 작성 ASP.NET 기반의 업무용 웹 어플에서 엑셀 출력 기능을 개발하면서 찾아본 내용등을 간단히 정리한 내용입니다. using OfficeOpenXml; using OfficeOpenXml.Style; /// /// Model 데이터를 기반으로 Excel 작성 /// /// /// byte[] public byte[] MakeDetailsAsExcel(ContractExcelModel excelModel) { using (var package = new ExcelPackage()) { var worksheet = package.Workbook.Worksheets.Add("Sheet1"); worksheet.Column(1).Width = 3; var allRangeHeight = 500; // workshe.. 2019. 1. 16.
정수의 N위치에서 반올림 /// /// 정수의 N위치에서 반올림 /// 엑셀파일과 같은 반올림을 할 경우엔 MidpointRounding.AwayFromZero를 이용 /// ex) GetExcelRound(13405, 1) // return 13410 /// ex) GetExcelRound(13405, 2) // return 13400 /// /// /// /// public static double GetExcelRound(double value, int digit) { var val1 = double.Parse((0.01 * Math.Pow(0.1, digit - 1)).ToString(), System.Globalization.NumberStyles.Float); var val2 = 100 * Math.Pow(10, di.. 2019. 1. 16.
iTextSharp로 PDF 작성 ASP.NET 기반의 업무용 웹 어플에서 PDF 출력 기능을 개발하면서 찾아본 내용등을 미래의 자신을 위해 간단히 정리한 내용입니다. 기본적으로 PDF 작성은 각 요소를 테이블로 작성하는 편이 조정할때 편한 것 같습니다. using iTextSharp.text; using iTextSharp.text.pdf; /// /// PDF 파일 작성 /// ※1. 포맷용의 PDF가 있을 경우 /// ※2. 복수 페이지의 PDF를 연속으로 출력할 경우도 대응가능 /// ※3. 웹 어플&응용 콘솔 양쪽에서 호출될 경우를 상정(공통로직) /// /// PDF스트림 /// PDF작성용 모델(리스트) /// 웹/응용 콘솔 양쪽에서 호출된 경우의 판단용 public void MakePdfStream(MemoryStream .. 2019. 1. 16.