728x90

System.Data.DataTable

  • 메모리 내 데이터의 한 테이블을 나타냅니다.
  • 생성자
    • DataTable()
    • DataTable(SerializationInfo, Streaming Context)
    • DataTable(String)
    • DataTable(String, String)
  • DataTable(String)
    • 지정된 테이블 이름을 사용하여 새 인스턴스를 초기화합니다.
    • 개체에 액세스할 때는 조건부로 대/소문자를 구분합니다.
    • DataTable 이름이 'mydatatable'과 'Mydatatable'이 존재하는 경우에는 테이블 중 하나를 검색하는데 문자열 대/소문자를 구분합니다.
    • 하지만 'Mydatatable' 하나만 존재할 경우 문자열 대/소문자를 구분하지 않습니다.
  • Ref
    • https://learn.microsoft.com/ko-kr/dotnet/api/system.data.datatable?view=net-7.0

System.Data.DataColumn

  • DataTable에 있는 열의 스키마를 나타냅니다.

    private void MakeTable()
    {
      // Create a DataTable.
      // Product라는 이름의 테이블 생성
      DataTable table = new DataTable("Product");
    
      // Create a DataColumn and set various properties.
      DataColumn column = new DataColumn();
      // 열의 데이터 타입 설정
      column.DataType = System.Type.GetType("System.Decimal");
      // 해당 열에 Null값이 허용되는지 여부 True:허용, False:불가 기본값 True
      column.AllowDBNull = false;
      column.Caption = "Price";
      column.ColumnName = "Price";
      // 기본값 설정
      column.DefaultValue = 25;
    
      // Add the column to the table.
      table.Columns.Add(column);
    
      // Add 10 rows and set values.
      DataRow row;
      for(int i = 0; i < 10; i++)
      {
          row = table.NewRow();
          row["Price"] = i + 1;
    
          // Be sure to add the new row to the
          // DataRowCollection.
          table.Rows.Add(row);
      }
    }
  • Ref

    • https://learn.microsoft.com/ko-kr/dotnet/api/system.data.datacolumn?view=net-7.0

System.Data.DataRow

  • DataTable의 데이터 행을 나타냅니다.

    private void CreateNewDataRow()
    {
      // Use the MakeTable function below to create a new table.
      // MakeNamesTable은 id,fname,lname의 열을 가진 table을 생성
      DataTable table;
      table = MakeNamesTable();
    
      // Once a table has been created, use the
      // NewRow to create a DataRow.
      DataRow row;
      row = table.NewRow();
    
      // Then add the new row to the collection.
      row["fName"] = "John";
      row["lName"] = "Smith";
      table.Rows.Add(row);
    }
  • Ref

    • https://learn.microsoft.com/ko-kr/dotnet/api/system.data.datarow?view=net-7.0
728x90

'C#' 카테고리의 다른 글

IIS Server Header 제거하기  (0) 2023.05.12
[.NET] SmtpClient  (0) 2022.12.02
[.NET] MailMessage  (0) 2022.12.01
[.NET] FormsAuthentication 폼 인증 설정  (0) 2022.11.30
[ASP.NET] View 단에 데이터 전달하기  (0) 2022.11.27
728x90

View에 데이터 전달하기

  1. viewModel
  2. viewData
  3. viewBag

ViewModel

  • view에 model의 형식을 지정한다.
  • controller에서 view에 model의 인스턴스를 전달한다.
  • viewModel을 사용시 컴파일 때 인스턴스 형식의 유효성 검사를 진행한다.
  • 사용법
// @model로 사용할 모델을 지정한다. 
@model WebApplication1.ViewModels.Address

<h2>Contact</h2>
<address>
    @Model.Street<br />
    @Model.City, @Model.State @Model.PostalCode<br />
    <abbr title="Phone">P:</abbr> 425.555.0100
</address>
public IActionResult Contact()
{
    ViewData["Message"] = "Your contact page.";

    var viewModel = new Address()
    {
        Name = "Microsoft",
        Street = "One Microsoft Way",
        City = "Redmond",
        State = "WA",
        PostalCode = "98052-6399"
    };

    return View(viewModel);
}

ViewData

  • string 키를 통해 액세스되는 ViewDataDictionary 개체입니다.
  • string을 제외하고 다른 개체 값을 추출할 때는 캐스트가 필요합니다.
  • 런타임에 동적으로 확인됩니다.
  • [viewData]라는 특성의 ViewDataAttribute를 사용할 수 있습니다.
@{ // Since Address isn't a string, it requires a cast. 
var address = ViewData["Address"] as Address; 
} 
@ViewData["Greeting"] World!

<address>
    @address.Name<br />
    @address.Street<br />
    @address.City, @address.State @address.PostalCode
</address>
public IActionResult SomeAction()
{
    ViewData["Greeting"] = "Hello";
    ViewData["Address"]  = new Address()
    {
        Name = "Steve",
        Street = "123 Main St",
        City = "Hudson",
        State = "OH",
        PostalCode = "44236"
    };

    return View();
}

ViewBag

  • ViewBag은 ViewData에 저장된 개체에 대한 동적 액세스를 제공
  • 캐스팅이 필요하지 않다.
@ViewBag.Greeting World!

<address>
    @ViewBag.Address.Name<br />
    @ViewBag.Address.Street<br />
    @ViewBag.Address.City, @ViewBag.Address.State @ViewBag.Address.PostalCode
</address>
public IActionResult SomeAction()
{
    ViewBag.Greeting = "Hello";
    ViewBag.Address  = new Address()
    {
        Name = "Steve",
        Street = "123 Main St",
        City = "Hudson",
        State = "OH",
        PostalCode = "44236"
    };

    return View();
}
  • ViewData와 ViewBag은 동일한 ViewData 컬렉션을 사용하므로 두 객체의 값을 읽고 쓸 때 혼합하여 사용할 수 있습니다.
@{ ViewBag.Title = "About Contoso"; // ViewBag 형식 }

<!DOCTYPE html>
<html lang="en">
    <head>
        // ViewData 형식
        <title>@ViewData["Title"]</title>
    </head>
</html>

ViewData와 ViewBag의 차이점

  • ViewData
    • 사전의 키는 문자열이므로 공백을 사용할 수 있습니다.
    • -> ViewData["Some Key With Whitespace"]
    • string 이외의 모든 형식을 캐스트 해야합니다.
  • ViewBag
    • 점 표기법을 사용하며 캐스팅이 필요하지 않습니다.
    • 간단하게 Null값을 확인할 수 있습니다.
    • -> @ViewBag.Person?.Name
728x90

'C#' 카테고리의 다른 글

IIS Server Header 제거하기  (0) 2023.05.12
[.NET] SmtpClient  (0) 2022.12.02
[.NET] MailMessage  (0) 2022.12.01
[.NET] System.Data.DataTable/DataRow/DataColumn  (0) 2022.11.30
[.NET] FormsAuthentication 폼 인증 설정  (0) 2022.11.30

+ Recent posts