Message : 'System.Web.HttpUnhandledException' 형식의 예외가 Throw되었습니다.
원격 호스트에서 연결을 닫았습니다. 오류 코드는 0x800703E3입니다.
위치: System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect)....

This exception indicates that the user closed the connection before the file had finished downloading by closing his/her browser or navigating to another page. Users never see this error but Elmah logs it. You can check your client is connected before writing to down stream but it can not solve the problem completely.

https://stackoverflow.com/questions/22084835/exception-message-the-remote-host-closed-the-connection-the-error-code-is-0x

반응형





제어판 - 프로그램 및 기능 - Windows 기능 사용/사용 안함 - 인터넷 정보 서비스 - World Wide Web 서비스 - 응용 프로그램 개발 기능 체크



반응형

 

 

public ActionResult Create()

{

return View();

}

 

public ActionResult Details(int id = 0)

{

Works works = db.Works.Find(id);

if (works == null)

{

return HttpNotFound();

}

return View(works);

}

 

 

유효성 검사

 

이 모든 것이 자동으로 생성된다! 완전 편리해~~~~~ sPRING할 때 유효성검사 다 지정해 줬어야 했는데 여기는 완전 할 필요도 없그만!

 

코드의 Model 개체는 강력한 형식이므로 (IEnumerable<Movie> 개체), 루프문 내부의 item 개체는 Movie 형식입니다. 결과적으로, 다른 여러 가지 장점들과 함께, 컴파일 시점 검사와 코드 편집기 상에서의 완벽한 인텔리센스를 지원 받을 있습니다

반응형

 

  1. 컨트롤러에서 모델 데이터에 접근하기

스캐폴딩(Scaffolding) 기능을 이용하여 새로운 컨트롤러와 뷰를 추가한다.

(CRUD(Create, Read, Update, Delete) 관련된 액션 메서드와 뷰들을 생성해주는 것입니다. (이런 방식으로 자동으로 만들어진 CRUD 액션 메서드와 뷰들을 다른 말로 스캐폴딩(Scaffolding)이라고도 부릅니다)

 

- 컨트롤러 추가

: Controller 폴더 > 우클릭 > Add > Controller

 

DB가 잘 연결될 수 있도록 해당사항에 잘 연결한다.

    

 

 

db에서 key인 것에 키를 등록한다.

 

using System.ComponentModel.DataAnnotations;

 

[Key]

public int SEQ { get; set; }

 

 

그러면 오류생기지 않고 컨트롤러 만들 수 있다!

 

* 전체적 흐름

 

 

기본화면

 

 

 

 

반응형

 

* 컨트롤러에서 뷰로 정보를 전달하는 방법

컨트롤러 클래스 : URL 요청에 대한 응답과정을 호출 -> 전달된 브라우저 요청을 처리 -> DB에서 데이터를 가져온다 -> 어떤 형식의 응답을 브라우저에 전송할 것인지를 결정하는 코드들이 작성되는 위치! -> 후에, 브라우저로 전달될 HTML 응답을 생성하고 형식화하기 위해 컨트롤러에 템프릿을 사용

뷰템플릿은 업무 로직을 수해아거나, 직접 연결해서는 안된다! 모든 데이터는 컨트롤러에서부터 받아서 작업을 수행! => 이로써 유지보수가 용이한 코드를 유지할 있다.

 

  1. 모델추가하기
  2. Modes 폴더 > 우클릭 Add > New Item > Code > Class 선택 > Work.cs
    1. 만들어진 해당 클래스에 데이터베이스에서 정보를 가지고 올 수 있도록 선언한다.
      1. public class Work
      2. {
      3. // 데이터베이스의 정보를 나타내기 위한 ,
      4. // 각각의 work 개체 인스턴스는 db 테이블의 'Row' 해당하고,
      5. // Work 클래스의 속성들을 테이블의 'column' 맵핑된다.
      6. public int SEQ {get; set;}
      7. public string TYPES_ { get; set; }
      8. public string VERSIONS { get; set; }
      9. public string SUMMARY { get; set; }
      10. public string DETAILS { get; set; }
      11. public string Title { get; set; }
      12. public DateTime INITDAES { get; set; }
      13. public DateTime FINDATES { get; set; }
      14. public DateTime ReleaseDate { get; set; }
      15. public decimal YN { get; set; }
      16. }//Work

         

    2. 동일한 파일에 데이터베이스를 연결할 Context를 만든다.

 

  1. public class WorkDBContext : DbContext
  2. {
  3. // db에서 work 클래스의 인스턴스를 가져오고, 저장하고, 갱신하는 작업을 처리
  4. // Entity FrameWork로부터 제공되는 dbContext 기본클래스를 상속받는다.
  5. public DbSet<Work> Works { get; set; }
  6. }//WorkDBContext

 

  1. 연결 문자열 생성 및 SQL 서버 LocaDB 작업하기
    프로젝트의 Web.config 에서 다음과 같이 연결한다.

     

    1. <add name="WorkDBContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-MvcMovies-20131008092844;Integrated Security=SSPI"
    2. providerName="System.Data.SqlClient" />

  

반응형

 

ASP.NET MVC 전달된 URL 기준으로 선택된 컨트롤러 클래스를 (그리고, 클래스에 존재하는 선택된 메서드를) 호출합니다. ASP.NET MVC 사용하는 기본 URL 라우팅 로직은, 실행할 컨트롤러와 메서드를 결정하기 위해서 다음과 같은 형태의 URL 사용합니다

   

View

Razor 엔진

 ASP.NET MVC 3에서 처음 도입된 Razor 엔진 사용해서 작성해 것입니다. Razor 기반의 템플릿은 .cshtml 이라는 파일 확장자를 갖고 있으며, C# 이용한 우아한 HTML 출력 생성 방식을 제공해줍니다. Razor 이용하면 템플릿 작성을 위해 필요한 글자수와 키입력을 최소화할 있으며, 빠르고 자연스러운 코딩이 가능해집니다

   

   

  1. _Layout.cshtml : 웹페이지에서 공통으로 사용되는 페이지 ( cf. 마스터 페이지)

상단의 로고 위치라던지, page 메뉴들을 공통으로 지정할 있다.

   

  1. Index.cshtml
반응형

 

  1. 새로운 프로젝트 만들기
    1. 프로젝트 > ASP.NET MVC 2 응용 프로그램 > 프로젝트 생성
  2. DB연결
    1. APPDATA > 우클릭 > 추가 > SQL Server 데이터베이스 > 이름 : (DB이름).mdf > 추가
  3. MODEL 만들기 위해서 model 폴더에서 우클릭 > LINQ to SQL 생성 (workClass.dbml)
    1. 서버탐색기 > 테이블 > VIEW 보여질 테이블을 선택해서 화면에 드래그앤 드롭 > 저장

       

 

 

*workClass.designer.cs 자동으로 db관련하여 생성된다.

 

 

  1. 모델 작업 .
반응형

   

어플리케이션의 구조를 Model(모델), View(), Controller(컨트롤러) 분리하는 패턴

 - Model(모델) : 실제 로직을 구현하는 부분. 일반적으로 데이터베이스로부터 데이터를 가져와서 담아두거나, 데이터 베이스로 저장하는 역할

- View () : 사용자 인터페이스, , UI부분. 화면 출력과 관계된 로직을 포함할 수는 있지만, 사용자 입력이나 인터랙션, 업무와 관계된 로직은 View 가져서는 안된다. 오로지 화면출력!

- Controller (컨트롤러) : mvc에서 가장 핵심이 되는 패턴. 사용자의 인터렉션을 처리하고, 모델을 조작하며, 최종 UI 출력할 있는 뷰를 담당한다.

 

   

이를 사용하는 이유,

  1. 요소 간에 연결을 보다 느슨하게 구성할 수가 있게 되어, 복잡한 애플리케이션을 관리하기에 용이하다.
  2. 병행 개발(동시에 각각의 컴포넌트를 개발하는 방식) 가능하다.
  3. 이러한 분리로 인하여, 기존의 ASP.NET 애플리케이션보다 훨씬 테스트하기가 용이하다.
    1. 기존의 ASP.NET 테스트 하기 위해서는 사용자 입력에 따라 반드시 서버가 요구된다는 제약이 있었지만, MVC 패턴을 적용하면 개별적인 컴포넌트를 독립적으로 테스트 있게 된다. ?? (? 뭔소릴가.)

         

 

  1. View - ViewResult 액션 결과 반환
  2. Redirect - RedirectResult 액션 결과 반환
  3. RedirectToAction - RedirectToRouteResult 액션 결과 반환
  4. RedirectToRoute - RedirectToRouteResult 액션 결과 반환
  5. Json - JsonResult 액션 결과 반환
  6. JavaScriptResult - JavaScriptResult 액션 결과 반환
  7. Content - ContentResult 액션 결과 반환
  8. File - 메서드와 함께 전달된 파라미터에 따라 FileContentResult, FilePathResult, FileStreamResult 액션 결과 반환

     

   

액션 결과는 ActionResult 클래스를 상속한다. 대부분의 경우 ViewResult 반환한다.

 

기반의 애플리케이션의 장점

· 각각의 페이지 단위로 기능을 작성하는 Page Controller 패턴을 사용한다
:
개별 화면 단위 중심적인 업무를 개발하기에 매우 적합하다.

· 이벤트 중심의 프로그래밍 모델을 제공한다
:
다양한 이벤트를 제공하는 많은 서버 컨트롤이 제공되기에, 이벤트 중심적인 개발을 통해 업무 화면을 직관적으로 작성할 있다.

· 뷰상태(ViewState) 서버 기반의 폼을 사용하기에, 상태 정보를 관리하기에 용이하다.

 

MVC 기반의 애플리케이션의 장점

· 모든 요청을 단일 컨트롤러를 통해서 처리하는 Front Controller 패턴을 사용한다 
:
모든 요청을 단일 컨트롤러를 통해 처리하므로, 라우팅(routing) 하부구조를 지원하는 애플리케이션을 개발할 있다.

· 애플리케이션을 3개의 논리 모듈로 분리하기에 애플리케이션의 복잡성을 관리하기 쉽게 한다.

· 뷰상태나 서버 기반의 폼을 사용하지 않는다 
:
개발자가 애플리케이션의 동작방식을 전체적으로 제어할 있으므로 세밀하게 애플리케이션을 조작하고 싶은 이들에게 적합하다. , 이러한 기능(상태정보 관리) 필요할 경우 추가적인 작업이 요구된다.

   

출처 : TAEYO.NET ASP.NET 강좌 기반의 개발과 MVC 기반의 개발 http://www.taeyo.net/Columns/View.aspx?SEQ=214&PSEQ=35&IDX=0

 

반응형

'Backend > .NET Framework' 카테고리의 다른 글

ASP.NET MVC 만들면서 배우기- 배우자(1) - view  (59) 2013.10.07
MVC 시작하기(1)  (60) 2013.10.07
Substring  (61) 2013.08.29
C# 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.  (57) 2013.08.09
c# split  (59) 2013.07.15

 

Substring

파라미터:

beginIndex - 개시 인덱스 ( 값을 포함한다)

endIndex - 종료 인덱스 ( 값을 포함하지 않는다)

 

 

0

1

2

3

4

5

6

7

1

2

3

4

5

6

7

8

        

a

b

c

d

e

f

g

H

 

1. substring : 어디서부터 어디까지 잘라내겠다는 뜻.(java의 substring과 같다)

Substring 메서드 : 문자열의 일부만 추출

형식 : 문자열변수명 . Substring( 추출위치 )

-> 위치는 0 부터 시작하며 , (0,3) 0문자열부터 3번째 문자열까지 4개의 문자열을 추출한다는 뜻입니다.

* 이때 공백도 문자열에 포함됩니다.

 

string str = "매우 힘든 C# 은 열심히 하면 재밌어요";

Console.WriteLine(str);

// 5번째 문자부터 8 문자 추출

Console.WriteLine(str.Substring(4,8));

// 5번째 이후 문자 모두를 추출

Console.WriteLine(str.Substring(4));

라고 인터넷에서 이야기 하고 있다.

그런데 javascript 에서는

 

if(inputPHONE2.length == 8){

sPN1 = inputPHONE2.substring(0,4);

sPN2 = inputPHONE2.substring(4,8);

}

else

{

sPN1 = inputPHONE2.substring(0, 3);

sPN2 = inputPHONE2.substring(3, 7);

}

 

이렇게 해도 잘만 나눠진다. 8글자에서 4 4개씩 추출하려고 했으니.

그러나 c#에서는 인덱스 에러가 ..... 그건 당연하다. 왜냐하면 7번째뿐이 없는데 8번쨰까지 하라고 했으니.

그래서 한번 substring 해주고 나면 다음번에는 자를 범위부터 끝까지.. 해줘야 한다.

Javascript 예외를 인정해 주는건가?

반응형

'Backend > .NET Framework' 카테고리의 다른 글

MVC 시작하기(1)  (60) 2013.10.07
ASP.NET MVC 시작하기  (60) 2013.10.07
C# 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.  (57) 2013.08.09
c# split  (59) 2013.07.15
c# 형변환  (56) 2013.07.15

 

Exception Type: System.NullReferenceException

Exception: 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

 

 

이유는?

 

1.  뷰에 선언하지 않고 .cs에서 바로 사용하는 경우. 즉 designer.cs 에 등록이 되지 않고 .cs단에서 사용한 경우.

( 아마 이 경우에는 빌드 시에 오류메세지가 나올 것이다. )

 

2.

반응형

'Backend > .NET Framework' 카테고리의 다른 글

ASP.NET MVC 시작하기  (60) 2013.10.07
Substring  (61) 2013.08.29
c# split  (59) 2013.07.15
c# 형변환  (56) 2013.07.15
/\s/g  (0) 2013.05.10

string[] splititDate = initDate.Split(new char[] { '-', ' ' }, StringSplitOptions.RemoveEmptyEntries);

 

java에서 split은 편했는데...

string[] arrStr =  $%^.split("문자열"); 

이런식으로 해서 접근하면 배열에 자를 기준으로 하여

저장되어 편리했었는데

 

c#은 뭘 많이 써줘야 하네..

chart[]로 되어 있어서 이런 옵션을 넣어줘야 하는듯.

왜 같은 자바스크립트인데.. 왜그러지?... 또 내가 삽질하고 있는 건가...


이렇게 안해도 

Split.('자를문자열');로 해주면 된다. 

역시... 하나더 알아둔거지뭐~~

반응형

'Backend > .NET Framework' 카테고리의 다른 글

Substring  (61) 2013.08.29
C# 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.  (57) 2013.08.09
c# 형변환  (56) 2013.07.15
/\s/g  (0) 2013.05.10
c# 구조체 GetType().BaseType  (0) 2013.04.25

int _days = Convert.ToInt32(splitfinDate[2]) - Convert.ToInt32(splititDate[2]);

 string days = Convert.ToString(_days) + "일 작업";

반응형

'Backend > .NET Framework' 카테고리의 다른 글

Substring  (61) 2013.08.29
C# 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.  (57) 2013.08.09
c# split  (59) 2013.07.15
/\s/g  (0) 2013.05.10
c# 구조체 GetType().BaseType  (0) 2013.04.25

 if (Form.txtUserID.value.replace(/\s/g, "") == "") {

\s : 공백
g : 전체검색 (global)

txtUserID.replace(/\s/g, ""); 

=> 문자열 txtUserID에 있는 모든 공백을 없앤다.

반응형

'Backend > .NET Framework' 카테고리의 다른 글

Substring  (61) 2013.08.29
C# 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.  (57) 2013.08.09
c# split  (59) 2013.07.15
c# 형변환  (56) 2013.07.15
c# 구조체 GetType().BaseType  (0) 2013.04.25

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace ex_refcalss

{

    class CPoint

    {

        private int x, y;


        public CPoint(int _x, int _y)

        {

            x = _x;

            y = _y;

        }



        public void print()

        {

            Console.WriteLine("base:{0}", GetType().BaseType);

            //base : System.Object 로 출력

            Console.WriteLine("class:{0},{1}", x, y);

        }

    }


    struct SPoint

    {

        public int x, y;

        public SPoint(int _x, int _y)

        {

            x = _x;

            y = _y;

        }

        

        //public SPoint(){} // 구조체는 기본 생성자를 만들 수 없음.(예약됨)

        public void Print()

        {

            Console.Write("base:{0},  ", GetType().BaseType);

            //base : System.ValueType.f 로 출력

            Console.WriteLine("struct:({0},{1})", x, y);

        }

    }



    class Program

    {

        static void Main(string[] args)

        {

            CPoint cpt = new CPoint(1, 1);

            cpt.print();

            


            SPoint spt;

            spt.x = spt.y = 7;

            spt.Print();


            SPoint spt1 = spt;

            spt1.Print();

            


        }

    }

}


반응형

'Backend > .NET Framework' 카테고리의 다른 글

Substring  (61) 2013.08.29
C# 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.  (57) 2013.08.09
c# split  (59) 2013.07.15
c# 형변환  (56) 2013.07.15
/\s/g  (0) 2013.05.10

+ Recent posts