블로그 이미지
Magic_kit
study 관련자료를 한곳으로 자기 개발 목적으로 재태크 재무 관리 목적으로 일상생활의 팁을 공유 하기 위하여 블로그를 개설 하였습니다.

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Category

Recent Post

Recent Comment

Archive

2009. 10. 14. 11:38 .Net Project/ASP.NET 3.5 Sp1
반응형

-유저 컨트롤 : 웹 사용자 정의 컨트롤 (*.ascx) 각각의 부분 페이지 작성시 사용 가능

- 닷넷처럼 개체 지향 환경에서 캡슐화하는 견고한 시스템을 구성하기 위한 핵심적인 개념  
- 유저 컨트롤 : ASP.NET 컨트롤을 단일한 컨테이너 컨트롤 내부로 캡슐화하는데 
                      웹 프로젝트 쉽게 재사용
- 서버컨트롤 : 한 요소의 시각적 디자인과 동작, 로직을 캡슐화하는데, 사용자가 웹 페이지에서
                      해당 요소와 상호작용 가능
서버 컨트롤
   - 새항목 추가 -> 웹 컨트롤 라이브러리 추가     

- 마스터 페이지 웹  사이트 전체의 레이아웃 
   웹애플리케이션의 모든 ASP.NET 페이지에서 사용할 수 있는 템플릿을 제공한다.
   마스터 페이지를 다룰 때 하위 페이지나 콘텐츠 페이지에서 참조하는 템플릿인 마스터 파일 생성
   확장자 .master
- 새 항목 추가  => 마스터 페이지 생성

- 테마와 스킨 -> 코드 한줄만 바꿔서, 전체 웹 사이트가 배경색이 검정에서 흰색으로 
                        또는 그 반대로 스타일을 변경
- 테마 : 각종 스타일, 그래픽에 적용할 수 있다는 점에서 CSS보다 더욱 향상된 기능  제공
            애플리케이션과 페이지, 서버 컨트롤 수준에 각각 적용

- 테마 적용 범위
   Web Form Page지시문에 Theme 속성 사용 : 해당 페이지만
   Web.Config 파일의 <Pages Theme=""> 사용 : 전체 웹 사이트

- 스킨(Skin) : 서버 큰트롤의 스타일을 미리 지정  




 




 

반응형
posted by Magic_kit
2009. 10. 13. 19:16 .Net Project/ASP.NET 3.5 Sp1
반응형
 Upload/View.aspx

 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="View.aspx.cs" Inherits="Upload_View" %>

<!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>상세_View</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        번호:<asp:Label ID="lblNum" runat="server"></asp:Label><br />
        제목:
        <asp:Label ID="lblTitle" runat="server"></asp:Label><br />
        이름:<asp:Label ID="lblName" runat="server"></asp:Label><br />
        이메일:<asp:Label ID="lblEmail" runat="server"></asp:Label><br />
        홈페이지:<asp:Label ID="lblHomepage" runat="server"></asp:Label><br />
        작성일:<asp:Label ID="lblPostDate" runat="server"></asp:Label><br />
        조회수:<asp:Label ID="lblReadCount" runat="server"></asp:Label><br />
        IP주소:<asp:Label ID="lblPostIP" runat="server"></asp:Label><br />
        파일 :
        <asp:Label ID="lblFileName" runat="server" /><br />
        파일 :
        <asp:HyperLink ID="lnkFileName" runat="server"></asp:HyperLink><br />
        파일 :
        <asp:PlaceHolder ID="ctlFileName" runat="server"></asp:PlaceHolder>
        <br />
        내용:<asp:Label ID="lblContent" runat="server"></asp:Label><br />
        <br />
       
        <asp:Button ID="btnModify"
                runat="server" Text="수정" onclick="btnModify_Click" />
       
     <input type="button" id="btnDelete" value="삭제"
            onclick="location.href='Delete.aspx?Num=
                        <%= Request["Num"] %>';" />
           
        <asp:Button ID="btnList" runat="server"
            Text="리스트" OnClientClick="location.href='List.aspx';return false;"
            onclick="btnList_Click" />    
    </div>
 </form>
</body>
</html>


 Upload/View.Cs

using System;

public partial class Upload_View : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (String.IsNullOrEmpty(Request["Num"]))
        {
            Response.Write("잘못된 요청입니다");
            Response.End();
        }
        else
        {
            if (!Page.IsPostBack)
            {
                DisplayData();
            }
        }
    }
    private void DisplayData()
    {
        UploadEntity ue = new UploadEntity();
        UploadBiz ub = new UploadBiz();
        ue = ub.ViewUpload(Convert.ToInt32(Request["Num"]));

        // 각각의 컨트롤에 바인딩
        lblNum.Text = Request["Num"];
        lblName.Text = ue.Name;
        lblEmail.Text = ue.Email;
        lblTitle.Text = ue.Title;
        lblHomepage.Text = ue.Homepage;
        lblPostDate.Text = ue.PostDate.ToString();
        lblReadCount.Text = ue.ReadCount.ToString();
        lblPostIP.Text = ue.PostIP;

        // 인코딩에 따른 내용 표시
        string content = "";
      
        // Text : 입력한 소스 그대로 화면에 출력
        if (ue.Encoding.ToLower() == "text")
        {
            content = ue.Content.Replace("&", "&amp;").Replace("<", "&lt;")
                .Replace(">", "&gt;").Replace("\r\n", "<br />")
                    .Replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;");
        }
        else if (ue.Encoding.ToLower() == "mixed") // Mixed : 태그처리 + 엔터처리
        {
            content = ue.Content.Replace("\r\n", "<br />");
        }
        else
        {
            content = ue.Content; // HTML : 태그처리
        }
        lblContent.Text = content;

        //[1]
        lblFileName.Text = String.Format
             ("<a href='Down.aspx?FileName={0}'>{0}</a> / 다운수 : {1}"
               , ue.FileName, ue.DownCount);
        
        //[2]
        lnkFileName.Text = ue.FileName;
        lnkFileName.NavigateUrl = String.Format
        ("~/Upload/Down.aspx?FileName={0}", ue.FileName);
       
        //[3]
        //[a] 동적으로 하이퍼링크를 만들어서
        HyperLink lnk = new HyperLink();
        lnk.Text = ue.FileName.ToString();
        lnk.NavigateUrl = String.Format
             ("~/Upload/Down.aspx?FileName={0}", ue.FileName);
       
        //[b] 플레이스홀더 컨트롤에 추가
        ctlFileName.Controls.Add(lnk);
    }
    //수정
    protected void btnModify_Click(object sender, EventArgs e)
    {
        //수정 페이지로 이동
        Response.Redirect("Modify.aspx?Num=" + Request["Num"]);
    }

    //리스트
    protected void btnList_Click(object sender, EventArgs e)
    {
        //리스트 페이지로 이동
        Response.Redirect("List.aspx?Num=" + Request["Num"]);
    }
}


Upload/Modify.aspx 

 <%@ Page Language="C#" AutoEventWireup="true"
        CodeFile="Modify.aspx.cs" Inherits="Upload_Modify" %>

<!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>글 수정_Modify</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>    
        이름 :
        <asp:TextBox ID="txtName" runat="server"></asp:TextBox><br />
        이메일 :
        <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox><br />
        홈페이지 :
        <asp:TextBox ID="txtHomepage" runat="server"></asp:TextBox><br />
        제목 :
        <asp:TextBox ID="txtTitle" runat="server"></asp:TextBox><br />
        내용 :
        <asp:TextBox ID="txtContent" runat="server"
             TextMode="MultiLine" Columns="20" Rows="5"></asp:TextBox><br />
        파일첨부 :
        <asp:FileUpload ID="ctlFileName" runat="server" />
        <asp:HiddenField ID="hidFileName" runat="server" />
        <asp:HiddenField ID="hidFileSize" runat="server" />
        <br />
        인코딩 :
        <asp:RadioButtonList ID="lstEncoding"
             runat="server" RepeatDirection="Horizontal"
             RepeatLayout="Flow">
            <asp:ListItem Selected="true">Text</asp:ListItem>
            <asp:ListItem>HTML</asp:ListItem>
            <asp:ListItem>Mixed</asp:ListItem>
        </asp:RadioButtonList>
        <br />
        암호 :
        <asp:TextBox ID="txtPassword"
           runat="server" TextMode="Password"></asp:TextBox><br />
           <br />
           <asp:LinkButton ID="btnModify"
            runat="server" onclick="btnModify_Click">수정</asp:LinkButton>
        
        <a href="View.aspx?Num=<%= Request["Num"] %>">취소</a><br />
        <asp:Label ID="lblError" runat="server" ForeColor="Red"></asp:Label>
      </div>
    </form>
</body>
</html>


 Upload/Modify.Cs

 using System;
using System.IO;

public partial class Upload_Modify : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (String.IsNullOrEmpty(Request["Num"]))
        {
            Response.Write("잘못된 요청입니다.");
            Response.End();
        }
        else
        {
            if (!Page.IsPostBack) //***** 처음 로드할 때만 예전 데이터 읽어오기
            {
                DisplayData();
            }
        }
    }
    private void DisplayData()
    {
        UploadEntity ue = new UploadEntity();
        UploadBiz ub = new UploadBiz();
        ue = ub.ViewUpload(Convert.ToInt32(Request["Num"]));

        // 각각의 컨트롤에 바인딩
        txtName.Text = ue.Name;
        txtEmail.Text = ue.Email;
        txtTitle.Text = ue.Title;
        txtHomepage.Text = ue.Homepage;
        txtContent.Text = ue.Content;

        // 수정 페이지에서 추가
        hidFileName.Value = ue.FileName;
        hidFileSize.Value = ue.FileSize.ToString();

        // 예전 인코딩에 따른 라디오버튼 리스트 선택
        if (ue.Encoding.ToLower() == "html")
        {
            lstEncoding.SelectedIndex = 1;
        }
        else if (ue.Encoding.ToLower() == "mixed")
        {
            lstEncoding.SelectedIndex = 2;
        }
        else
        {
            lstEncoding.SelectedIndex = 0; // 기본값
        }
    }
    protected void btnModify_Click(object sender, EventArgs e)
    {
        // 파일 업로드
        string strDirectory = Server.MapPath(".") + "
\\files\\"; //
        string strFileName = String.Empty;
        int intFileSize = 0;
        if (!String.IsNullOrEmpty(ctlFileName.FileName))
        {
            // 첨부된 파일이 있다면,       
            // 파일명 추출
            strFileName =
                // 파일명 중복처리 필요
                UploadUtil.GetFilePath(strDirectory, ctlFileName.FileName);
            // (경로 + 파일명)으로 저장 실행
            ctlFileName.PostedFile.SaveAs
                             (Path.Combine(strDirectory, strFileName));
            intFileSize = ctlFileName.PostedFile.ContentLength; // 파일사이즈
        }
        else
        {
            strFileName = hidFileName.Value;
            intFileSize = Convert.ToInt32(hidFileSize.Value);
        }

        // DB 저장
        UploadBiz ub = new UploadBiz();

        UploadEntity ue = new UploadEntity();
        ue.Num = Convert.ToInt32(Request["Num"]);
        ue.Name = txtName.Text;
        ue.Email = txtEmail.Text;
        ue.Title = txtTitle.Text;

        //ue.PostIP = Request.UserHostAddress;
        ue.Content = txtContent.Text;
        ue.Password = txtPassword.Text;
        ue.Encoding = lstEncoding.SelectedValue;
        ue.Homepage = txtHomepage.Text;
        ue.FileName = strFileName; // 변경...
        ue.FileSize = intFileSize; // 변경...
        ue.ModifyDate = DateTime.Now;
        ue.ModifyIP = Request.UserHostAddress;

        int result = ub.ModifyUpload(ue);
        if (result == -1)
        {
            lblError.Text = "암호가 틀립니다.";
        }
        else
        {
            // 상세보기로 이동
            Response.Redirect("View.aspx?Num=" + Request["Num"]);
        }
    }
}


 Upload/Delete.aspx

 <%@ Page Language="C#" AutoEventWireup="true"
   CodeFile="Delete.aspx.cs" Inherits="Upload_Delete" %>

<!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>글 삭제_Delete </title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID ="lblNum" runat="server" ForeColor="Red"></asp:Label>
        번 글을 삭제 하시겠습니까? <br />
        암호
        <asp:TextBox ID="txtPassword"
                runat="server" TextMode="Password"></asp:TextBox>
        <asp:Button ID="btnDelete" runat="server" Text="삭제"
                OnClientClick='return confirm("정말로 삭제하시겠습니까?");'
                onclick="btnDelete_Click"  />
        <asp:Label ID="lblError" runat="server" ForeColor="Red"></asp:Label>   
   
    </div>
    </form>
</body>
</html>


 Upload/Delete.Cs

 using System;

public partial class Upload_Delete : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //넘겨져 온 쿼리스트링 값 검사
        if (String.IsNullOrEmpty(Request["Num"]))
        {
            Response.Write("잘못된 요청입니다.");
            Response.End();
        }
        else
        {
            lblNum.Text = Request["Num"];
        }
       
    }
    protected void btnDelete_Click(object sender, EventArgs e)
    {
        UploadBiz ub = new UploadBiz();

        //이미 업로드된 파일명 얻기
        string fileName = "";
        UploadEntity ue = ub.ViewUpload(Convert.ToInt32(Request["Num"]));
        fileName = ue.FileName;

        int result = ub.DeleteUpload
                       (Convert.ToInt32(Request["Num"]), txtPassword.Text);
        if (result == -1)
        {
            lblError.Text = "암호가 틀립니다.";
        }
        else
        {
            if (fileName != "")
            {
            try
            {
            System.IO.File.Delete(Server.MapPath(".") + "
\\files\\" + fileName);
            }
                catch (Exception)
                {
                   //empty
                }
            }
            //리스트로 이동
            Response.Redirect("List.aspx");
        }
    }
}




 Upload/Search.aspx

 <%@ Page Language="C#" AutoEventWireup="true"
   CodeFile="Search.aspx.cs" Inherits="Upload_Search" %>

<!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>검색_Search</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <asp:GridView ID="ctlUploadList" runat="server"
            AutoGenerateColumns="false" AllowPaging="True"
            PageSize="3"
            onpageindexchanging="ctlUploadList_PageIndexChanging"
            style="margin-right: 0px">
            <Columns>
                <asp:BoundField DataField="Num" HeaderText="번호" />
               
                <asp:HyperLinkField DataTextField="Title" HeaderText="제목"
                    DataNavigateUrlFormatString="View.aspx?Num={0}"
                    DataNavigateUrlFields="Num" />
               
                <asp:TemplateField HeaderText="파일">
                    <ItemTemplate>
                        <asp:HyperLink ID="HyperLink2" runat="server"
                            NavigateUrl=
                            '<%# "Down.aspx?FileName=" + Eval("FileName") %>'>
                            <img src="images/유이.png"
                               width="50px" height="50px" border="0" alt="다운로드" />
                        </asp:HyperLink>               
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>   
        </asp:GridView>    
        <br />        
        <a href="List.aspx">검색종료</a>
      </div>
    </form>
</body>
</html>


 Upload/Search.Cs

using System;
public partial class Upload_Search : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            DisplayData();
        }
    }
    protected void ctlUploadList_PageIndexChanging
                                                 (object sender, GridViewPageEventArgs e)
    {
        this.ctlUploadList.PageIndex = e.NewPageIndex;
        DisplayData();
    }

    private void DisplayData()
    {
        UploadBiz ub = new UploadBiz();
        this.ctlUploadList.DataSource = ub.ListUpload();
        this.ctlUploadList.DataBind();
    }
}



















반응형
posted by Magic_kit
2009. 10. 13. 11:47 .Net Project/ASP.NET 3.5 Sp1
반응형
FrmValidationSummary.aspx 



<%@ Page Language="C#" AutoEventWireup="true"
    CodeFile="FrmValidationSummary.aspx.cs"
     Inherits="FrmValidationSummary" %>

<!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>Validation Summary Control</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        &nbsp;아이디 :
        <asp:TextBox ID="txtUserID" runat="server"></asp:TextBox>
        <br />
        &nbsp;이름 :
        <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
        <br />
        <br />
        <asp:Button ID="btnOK" runat="server" Text="확인" onclick="btnOK_Click" />
        <br />
        <br />
        <div>
            <asp:RequiredFieldValidator ID="valUserID" runat="server" 
                ControlToValidate="txtUserID"
                Display="None" ErrorMessage="아이디 입력"></asp:RequiredFieldValidator>
            
            <asp:RequiredFieldValidator ID="valName" runat="server" ControlToValidate="txtName"
                Display="None" ErrorMessage="이름 입력"></asp:RequiredFieldValidator>
           
            <asp:ValidationSummary ID="valSummary" runat="server"
                ShowMessageBox="true" ShowSummary="false" />
        </div>
    </div>
    </form>
</body>
</html>


유효성 검사 컨트롤을 한꺼번에 모아서 출력하고 싶을때 사용하는 것은 ValidationSummary 이다

1. 아이디 : 텍스트박스  RequiredFieldValidator 컨트롤 추가
    이름 : 텍스트박스  <--- 확인 버튼 클릭시 이벤트 처리 
    <asp:ValidationSumary ID =  "ValSummary" runat="server" 
                                                ShowMessageBox="true" ShowSummary="false" /> 

2.  RequiredFieldValidator 컨트롤 속성 지정 
                   ControlToValiddate = "txtUserID"  Display="None" ErrorMessage="아이디 입력" />

3. Messagebox 형태로 보여주고 싶을 때 Display="None", ShowSummary="false" 속성 지정 완료

4. RequiredFieldValidator 컨트롤은 디자인 하단에 두고 사용하도록 한다 .. 
                 (실행시는 상관없이 동일하게 실행 이용 완료 된다)




  



반응형
posted by Magic_kit
2009. 10. 13. 11:23 .Net Project/ASP.NET 3.5 Sp1
반응형
 FrmCustom Validator.aspx

 
<!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>
    <title></title>
    <script type="text/javascript">
        function CheckNum() {
            var obj = document.getElementById("txtEven");
            if (obj.value % 2 == 0) {
                alert("통과");
            }
            else {
                alert("에러");
            }
        }
    </script>
</head>
<body>

짝수만 입력 : <input type="text" id="txtEven" /><br />
                    <input type="button" value="짝수만 입력" onclick="CheckNum();" />

</body>
</html>


 1.짝수만 입력 : 텍스트박스 <-- "짝수만입력" 버튼을 통해 이벤트 처리 

   - 자바 스크립트를 통하여 버튼 이벤트 처리 하여 표현하였다
   - 짝수, 홀수 확인 후 통과, 에러 메시지 출력



반응형
posted by Magic_kit