1. Model State
모델 스테이트(Model State)= 모델 스테이트 딕셔너리

유효성 에러 표시 용도

혹은 이렇게 체크

if(ModelState.IsValid)

{

Employee employee =new

UpdateModel(employee);



EmployeeBusinessLayer employeeBusinessLayer

mployeeBusinessLayer.AddEmployee(employee);


return RedirectToAction("Index");

}

유효성 검사중에 이 프로퍼티들에서 fail이 나면 model state dictionary(컨트롤러 클래스의 ModelState를 의미하는)에 추가가됩니다.

model state에 에러가 있으면 ModelState.IsVaild 는 false를 반환합니다. 이같은 경우, 전화번호를 추가하는 HTML 페이지는 다시 그려지게됩니다. 그렇지 않으면, 즉, 에러가 없을 경우는 디비에 저장이 됩니다.

2. Validation 도우미 2개

1) Html.ValidationSummary() 도우미 

HTML폼 위에서 바로 호출이 됩니다. 그리고선 불릿(bulleted) 리스트로 에러 메시지를 보여줍니다.

2) Html.ValidationMessage() 도우미

각각의 HTML 폼 필드 옆에 호출이 됩니다. 에러를 해당 필드 바로 옆에 표시해주는거죠. 에러가 난 부분에도 같은 에러메시지가 표시되는 것을 확인할수 있습니다.


이 두 메쏘드는 ASP.NET MVC 스카폴딩에 의해 자동적으로 Create와 Edit 뷰에서 사용이됩니다.

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Validation1.Models.TelDir>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
 Create
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>Create</h2>
    <%= Html.ValidationSummary() %>
    <% using (Html.BeginForm()) {%>
        <fieldset>
            <legend>Fields</legend> 
            <div class="editor-label">
                <%= Html.LabelFor(model => model.Name) %>
            </div>
            <div class="editor-field">
                <%= Html.TextBoxFor(model => model.Name) %>
                <%= Html.ValidationMessageFor(model => model.Name) %>
            </div>
            
            <div class="editor-label">
                <%= Html.LabelFor(model => model.Phone) %>
            </div>
            <div class="editor-field">
                <%= Html.TextBoxFor(model => model.Phone) %>
                <%= Html.ValidationMessageFor(model => model.Phone) %>
            </div>
            
            <div class="editor-label">
                <%= Html.LabelFor(model => model.SpeedDial) %>
            </div>
            <div class="editor-field">
                <%= Html.TextBoxFor(model => model.SpeedDial) %>
                <%= Html.ValidationMessageFor(model => model.SpeedDial) %>
            </div>
            
            <p>
                <input type="submit" value="Create" />
            </p>
        </fieldset>
    <% } %>
    <div>
        <%=Html.ActionLink("Back to List", "Index") %>
    </div>
</asp:Content>


다음은 유효하지 않은 값을 summit 했을때의 화면입니다.


3. PreBinding / PostBinding


1) HTML 폼 필드들이 클래스에 바운드 되기 전에 에러를 주는 PreBinding 에러

2) HTML 폼 필드들이 바운드 된 후에 에러를 주는 PostBinding 에러

Create()  액션은 다음과 같이 TelDir 클래스의 인스턴스를 받도록 되어있습니다.

public ActionResult Create([Bind(Exclude="Id")] TelDir dir)

summit을 하게되면 모델 바인더에 의해 HTML 폼 필드들의 값이 dir 로 바운드됩니다. 폼 필드값을 바운드 하지 못하면 자동적으로 디폴트 모델 바인더에 에러 메시지를 추가합니다.

예를들어, 디폴트 모델 바인더는 TelDir 클래스의 SpeedDial 속성에 'speed' 문자를 바운드 할 수 없습니다. decimal 타입에 string 이라니. 말이 안되죠. 그래서, 모델 바인더는 모델 스테이트에 에러를 추가합니다. 저희가 유효성 검사를 하지 않은 필드도 검사를 하는거죠.













저금리 시대 새마을금고 출자금 통장 추천입니다.

1년 기준으로 정확하게 올해 3월에 천만원에 대한 2.5% 배당를 받았습니다.

(해당 금액을 운영하는 새마을금고에 따라 다를 수 있습니다. 

 지역에 따라 새마을금고가 활발한 지역이라면 올해기준 2.5%는 받으실 수 있을거에요)


예전 잘 나올 때는 년에 4~5%까지도 이자를 받았습니다.

(이자를 매년초 할당받아 직접 찾거나, 안찾으면 자동으로 출자금에 보태어집니다.)


천만원(부부일 경우 2,000만원) 정도 목돈을 굴릴만한 곳이 있습니다. 

바로 새마을금고 출자금 통장입니다. 1인당 천만원 까지



보통 새마을금고 예금/적금 통장을 만들때 저율과세를 받기 위한 조합원 자격획득을 위해 

만드는 통장인데요. 보통 만원정도로 만드시죠.

(저율과세는 얻은 이자의 농특세에 해당하는 1.4%만 떼어가는 형태입니다.)

1인당 천만원까지 넣어둘 수 있습니다.

단, 찾으려면 해지를 해야됩니다. 즉, 오래 보관하는 목적으로만 사용하세요.




아래와 같이 현재 저축은행 금리 2프로가 되지 않습니다. 평균 1.94네요. 1금융권은 더이상 볼필요도 없겠죠.

저축은행 홈페이지 예금금리 조회 (아래)

https://www.fsb.or.kr/financepro/deposit_info06.do









'생활 > 재테크' 카테고리의 다른 글

(재테크) 기본, 적금, 예금 (정리중)  (0) 2016.03.21
KDB direct/HiAccount 체크카드  (0) 2016.03.16
월급통장 쪼개기 2 + 통장추천  (0) 2016.03.16
월급통장 쪼개기 1  (0) 2016.03.16
나이대별 재테크  (0) 2016.03.16





https://www.youtube.com/watch?v=KvTy_FAYjks&index=3&list=PL6n9fhu94yhVm6S8I2xd6nYz2ZORd7X2v


------------------------------------------------------ ------------------------------------------------------ 

runtime using code 확인


컨트롤러.cs 에서

Index()함수 안에서 아래 구문 넣어서 확인

그리고 웹페이지 Index 확인


return typeof(Controller).Assembly.GetName().Version.ToString();



뷰엔진 (ASPX, Razor)


비쥬얼스튜디오

우측 프로젝트 최상위 우측키 클릭

web 탭에서 어디서 퍼블리싱 할 것인지 선택가능(Visual Studio or IIS) 

IIs 선택하고 create Virtual Directory 선택하면 자동으로 생성됨


http://localhost/MVCDemo/Home/Index

       Server    Project 컨트롤러 Index함수


= http://localhost/MVCDemo


MVC URL        = 컨트롤러의 액션 메소드를 매핑

일반 웹폼 URL  = 물리적인 파일 매핑



------------------------------------------------------------------------------------------------ ------------

3강


global.asax

URL 매핑

컨트롤러Home  엑션 index 페이지 매핑해주는 함수호출

Routeconfig.cs


---------------------------------------------------------------------------------------------- --------------

기존 QueryString 방식 

호긍 

localhost/MVCDemo/home/index/10  형태로 넘길수도 있음


둘다 Index(string id, string name)  형태로 받아 사용가능

return "ID = " + id + " Name =" + name;


GET/POST 모두 가능




------------------------------------------------------ 

view

컨트롤러 해당 함수에서 우측키 뷰페이지 생성


public ActionResult Index()

{

.,..

..

return View();

}


public ViewResult Index()

{

.,..

..

return View();

}


public ViewResult Index()

{

//ViewBag 객체한테 넘겨준다

//동적 프로퍼티에 넣어준다.

ViewBag.Countries = new List<string>();

{

"India", "US", "Korea"

};


return View();

}


ViewBag.동적


cshtml = Razor

cshtml에서 닷넷 코드를 쓰려면 @ 골뱅이


<ul>

//똑같은 프로퍼티 명으로 받아야됨

@foreach(string strCountry in ViewBag.Countries)

{

<li>@strCountry </li>

}

</ul>


--------------------------------------------------------------------------------------------------- --------- 

ViewBag, ViewData is mechanism to pass data from controller to view.


controller -> view 


ViewData["aaa"] = "bbb";

ViewBag.aaa = "bbb";



---------------------------------------------------------------------------------------------------- -------- 

Model


view 페이지 최상단 import

@model MVCDemo.Models.Employee 



컨트롤러 함수 마지막

View(employee) 넘겨줘야됨



------------------------------------------------------------------------------------------------- ----------- 

1. 인스톨 엔티티 프레임워크 by using nuget package manager

2. Add EmployeeContext.cs class 모델폴더에 추가

3. Add 연결문자열 to web.config 


VS에서 Manage Package Manager 선택

엔티티프레임워크 선택 추가



----------------------------------------------------------------------- ------------------------------------- 

테이블 읽어오도록 수정


@foreach(Department department in @Model)

{

<li>

@Html.ActionLink(department.Name, "Index", "Employee", new{ departmentId = department.ID }, null)

//                        인자,     ,,,       컨트롤러명

</li>

}


EmplyeeController 안에 인자받는 클래스 생성

public ActionResult Index(int deptId)

{


List<Employee> employees = employeeContext.Employees.Where(emp = emp.DepartmentId == deptId).ToList();


}


----------------------------------------------------------------------------------------- ------------------- 

마지막 BackToList 시 에러

@Html.ActionLink("Back to List","Index" ) =>@Html.ActionLink("Back to List","Index", new{ departmentId = @Model.DepartmentId})  )




Index(int deptId) 였는데


------------------------------------------------------------------------------------------- ----------------- 








+ Recent posts