Asp.Mvc 2.0 사용자 등록 실례 설명 실현(1)

최근 에 ASP.NET MVC 를 연구 하고 있 습 니 다.몇 가지 강 좌 를 봤 는데 인상 이 깊 지 않다 고 생각 하여 일련의 MVC 강 좌 를 쓰기 로 했 습 니 다.한편 으로 는 자신의 인상 을 강화 하기 위해 서 이 고 다른 한편 으로 는 MVC 를 공부 하 는 친구 들 에 게 도움 을 주 고 참고 자료 로 삼 기로 했 습 니 다.이 시리즈 의 튜 토리 얼 은 하나의 사례 를 통 해 MVC 를 간단명료 하 게 설명 하고 관련 지식 포 인 트 는 우리 의 사례 에서 모두 에 게 설명 할 것 이다.
Asp.mvc 모델 은 전통 적 인 asp.net webform 방식 을 바 꾸 었 습 니 다.우 리 는 MVC 를 사용 하여 WEB 프로그램 을 개발 할 때 전통 적 인 WEBFORM 방식 의 사상 을 버 리 고 전통 적 인 WEBFORM 방식 의 사용자 가 단 추 를 끌 고 단 추 를 두 번 누 르 면 배경 에 해당 하 는 시간의 처리 코드 를 쓸 수 있 습 니 다.Asp.net mvc 는 aspx 페이지 만 있 고 배경 이 없 는 aspx.cs 페이지 입 니 다.
MVC 는 쉽게 말 하면 3 층 밖 에 없다.Controller,model,view.
View 는 표현 층 으로 aspx 페이지 로 간단하게 이해 할 수 있 습 니 다.
모델 은 실체 류 로 데이터베이스 테이블 에 대응 하 는 실체 류 로 간단하게 이해 할 수 있다.
Controller 는 VIEW 와 MODEL 층 사이 의 컨트롤 러 에 해당 합 니 다.Controller 의 역할 은 MODEL 층 에서 데 이 터 를 읽 고 VIEW 웹 페이지 에 데 이 터 를 표시 하 는 것 입 니 다.
이 절 은 각 사이트 에 필요 한 사이트 등록 기능 을 설명 하고 MVC 방식 으로 어떻게 실현 되 는 지 살 펴 본다.
1.준비 작업.
개발 도구:vs 2010,sqlserver 2005 데이터베이스
 
데이터베이스 사용자 정보 표:먼저 데이터베이스 에 사용자 정 보 를 저장 할 표를 만 듭 니 다.

--     
CREATE TABLE[dbo].[UserInfo]
(
[UserName] [varchar](20)COLLATEChinese_PRC_CI_ASNOTNULL,---   
[UserPwd] [varchar](20)COLLATEChinese_PRC_CI_ASNOTNULL,---  
[Email] [varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL--    
) ON[PRIMARY]
GO
ALTER TABLE[dbo].[UserInfo]ADDCONSTRAINT[PK__UserInfo__C9F2845707020F21]PRIMARYKEYCLUSTERED ([UserName])ON[PRIMARY]
GO
 
2.MODEL 만 들 기
이어서 우 리 는 MODEL 층 을 추가 합 니 다.사용자 가 등록 할 때 사용자,비밀 번 호 를 입력 하고 비밀 번 호 를 확인 해 야 합 니 다.EMAIL 은 해당 하 는 MODEL 등록 클래스 를 만 듭 니 다.

/// <summary> 
 ///     MODEL 
 /// </summary> 
 public class RegisterModel 
 { 
 /// <summary> 
 ///     
 /// </summary> 
 [DisplayName("   ")] 
 public string UserName 
 { get; set; } 
 
 /// <summary> 
 ///    
 /// </summary> 
 [DisplayName("  ")] 
 public string UserPwd 
 { 
 get; 
 set; 
 } 
 
 [DisplayName("    ")] 
 public string ConfirPwd 
 { 
 get; 
 set; 
 } 
 /// <summary> 
 ///      
 /// </summary> 
 [DisplayName("  ")] 
 public string Email 
 { 
 get; 
 set; 
 } 
 } 
 DisplayName 속성 은 필드 의 외부 디 스 플레이 이름 을 표시 합 니 다.속성의 별명 으로 이해 할 수 있 습 니 다.
3.VIEW 페이지 만 들 기
VIEW 페이지 는 사용자 가 등록 한 페이지 입 니 다.
항목 의 View 폴 더 아래 오른쪽 단 추 를 누 르 면 보 기 를 추가 하고 다음 창 을 팝 업 합 니 다.   

강 한 형식의 등록 페이지 를 추가 합 니 다.강 한 유형의 페이지 를 만 들 때 보기 에 대응 하 는 MODEL 류 를 선택 하 십시오.위의 그림 과 같은 빨간색 표 시 를 선택 하 십시오.여 기 는 registermadel 을 선택 하 십시오.
VIEW 페이지 를 추가 한 후 다음 과 같 습 니 다:강 한 유형의 페이지 계승 System.Web.Mvc.ViewPage<>

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MvcLogin.Models.RegisterModel>" %> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
 <title>    </title> 
</head> 
<body> 
 <div> 
 <br /> 
 
 <p style="font-size:12px;color:red"> 
 
 <%if (ViewData["msg"] != null) 
 {%> 
 <%:ViewData["msg"]%> 
 <%} %> 
 </p> 
 <br /> 
 <%Html.BeginForm(); %> 
 
 
 <table> 
 <tr> 
 <td><%: Html.LabelFor(m => m.UserName) %></td> 
 <td> <%: Html.TextBoxFor(m => m.UserName) %></td> 
 </tr> 
 
 <tr> 
 <td> <%: Html.LabelFor(m => m.UserPwd) %></td> 
 <td> <%: Html.PasswordFor(m => m.UserPwd) %></td> 
 </tr> 
 
 <tr> 
 <td> <%: Html.LabelFor(m => m.ConfirPwd) %></td> 
 <td> <%: Html.PasswordFor(m => m.ConfirPwd)%></td> 
 </tr> 
 
 <tr> 
 <td> <%: Html.LabelFor(m => m.Email) %></td> 
 <td> <%: Html.TextBoxFor(m => m.Email) %></td> 
 </tr> 
 
 <tr> 
 <td> <input type=submit value="  " /></td> 
 <td></td> 
 </tr> 
 
 
 </table> 
 
 
 
 <%Html.EndForm(); %> 
 
 </div> 
</body> 
</html> 
 위의 Html 클래스 는 HTML 컨트롤 을 만 드 는 데 사 용 됩 니 다.
 
Html.BeginForm()은 폼 컨트롤 을 만 드 는 데 사 용 됩 니 다.
Html.LabelFor 탭 LABEL 컨트롤 생 성
Html.PasswordFor 암호 텍스트 상자 컨트롤 생 성
Html.TextBox TEXTbox 컨트롤 을 만 드 는 데 사 용 됩 니 다.
Html.LabelFor(m=>m.Username)이것 은 페이지 에 LABEL 탭 을 만 드 는 데 사 용 됩 니 다.
m=>m.Username 은 lamda 표현 식 쓰기 입 니 다.m.Username 은 속성 을 표시 하 는 별명 입 니 다.
HTML 코드 생 성 은 다음 과 같 습 니 다:사용자 이름
 
4.컨트롤 러 만 들 기
 
우 리 는 UserController 를 만 들 고 그 안에 등록 방법 을 추가 합 니 다.다음 과 같 습 니 다.

publicActionResult Register()
 {
 return View();
 }
 
VIEW 페이지 의 이름과 방법 이 같 습 니 다.이때 우리 가 Register 페이지 를 방문 할 때 URL 은 Register()방법 으로 이동 합 니 다.
controller 대상 을 통 해 VIEW 페이지 에서 보 여줄 내용 을 되 돌려 줍 니 다.
페이지 효 과 는 다음 과 같 습 니 다:
 
그 중에서 user 는 controller,Register 표 에서 controller 의 방법 이름,즉 해당 하 는 페이지 를 표시 합 니 다.
5.sqlhelper
이상 의 준비 작업 이 끝 난 후에 저 희 는 가입 한 사용자 이기 때문에 데이터 베 이 스 를 추가 하 는 방법 이 있어 야 합 니 다.저 희 는 SQLHELP 류 를 만들어 데이터 베 이 스 를 조작 해 야 합 니 다.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data.SqlClient; 
using System.Data; 
 
namespace MvcLogin.Models 
{ 
 public class SqlHelper 
 { 
 //         
 readonly string conStr = "server=.;uid=sa;pwd=123;database=cztest;Min Pool Size=10;"; 
 
 string strAdd = @"INSERT INTO dbo.UserInfo 
 ( UserName, UserPwd, Email ) 
VALUES ( '{0}', -- UserName - varchar(20) 
 '{1}', -- UserPwd - varchar(20) 
 '{2}' -- Email - varchar(50) 
 )"; 
 
 string strUserExist = @" SELECT * FROM dbo.UserInfo WHERE UserName='{0}' AND UserPwd='{1}'"; 
 
 /// <summary> 
 ///      
 /// </summary> 
 /// <param name="model"></param> 
 /// <returns></returns> 
 public bool AddUser(RegisterModel model) 
 { 
 strAdd = string.Format(strAdd, model.UserName, model.UserPwd, model.Email); 
 SqlConnection con = new SqlConnection(conStr); 
 con.Open(); 
 SqlCommand cmd = new SqlCommand(strAdd,con); 
 int o = cmd.ExecuteNonQuery(); 
 con.Close(); 
 if (o>0) 
 { 
 return true; 
 } 
 return false; 
 } 
 
 /// <summary> 
 ///          
 /// </summary> 
 /// <param name="model"></param> 
 /// <returns></returns> 
 public bool ExistUser(RegisterModel model) 
 { 
 strUserExist = string.Format(strUserExist, model.UserName, model.UserPwd); 
 SqlConnection con = new SqlConnection(conStr); 
 con.Open(); 
 SqlCommand cmd = new SqlCommand(strUserExist, con); 
 SqlDataAdapter adp = new SqlDataAdapter(cmd); 
 DataSet ds = new DataSet(); 
 adp.Fill(ds); 
 con.Close(); 
 if (ds!=null&&ds.Tables[0].Rows.Count>0) 
 { 
 return true; 
 } 
 return false; 
 } 
 
 } 
} 
 6.등록 방법 제출
페이지 의 제출 단 추 를 누 르 면 사용 자 를 추가 합 니 다.
이 때 controller 의 추가 방법 을 실행 합 니 다.controller 클래스 에 등록 방법 을 추가 합 니 다.

/// <summary> 
 ///      
 /// </summary> 
 /// <param name="model"></param> 
 /// <returns></returns> 
 [HttpPost] 
 public ActionResult Register(Models.RegisterModel model) 
 { 
 bool result = false; 
 if (!new Models.SqlHelper().ExistUser(model)) 
 { 
 result = new Models.SqlHelper().AddUser(model); 
 } 
 
 if (result) 
 { 
 //         
 FormsService.SignIn(model.UserName, false); 
 return RedirectToAction("index"); 
 } 
 else 
 { 
 //       
 ViewData["msg"] = "      "; 
 return View(model); 
 } 
 } 
 어떤 학생 들 이 controll 에 register 방법 이 두 개 있 습 니 다.제출 을 클릭 할 때 어떤 것 을 호출 할 지 판단 하 는 방법 이 있 습 니 다.이 방법 앞 에 httppost 요청 이 있 습 니 다.이 방법 은 post 요청 만 받 아들 이 는 것 을 나타 냅 니 다.기본 적 인 상황 에서 방법 은 get 입 니 다.제출 단 추 를 누 르 는 요청 은 POST 요청 에 속 합 니 다.이 등록 방법 은 모두 실 행 됩 니 다. 
7.INDEX 페이지 만 들 기
사용자 가 추가 에 성공 하면 index 페이지 로 이동 합 니 다.index 페이지 는 비 강 한 유형의 페이지 입 니 다.페이지 에 환영 하 는 사용자 의 정 보 를 표시 합 니 다.이 DEMO 가 사용 하 는 form 인증 때문에 Forms Authentication 류 를 사 용 했 습 니 다.

마지막 파일 디 렉 터 리 는 다음 과 같 습 니 다.

이 사례 를 보고 사용자 등록 기능 이 이렇게 실현 되 기 어렵 지 않 은 것 같 지 않 습 니까?그러나 우리 도 직접 실천 해 야 앞으로 의 학습 에서 더욱 유연 하고 능숙 하 게 활용 하여 진정 으로 자신의 것 이 될 수 있 습 니 다.

좋은 웹페이지 즐겨찾기