ViewBag을 이용한 전달

다이나믹(Dynamic) 오브젝트로 되어 있고 자동으로 변수형을 유추하기 때문에 사용 시 형 변환이 필요 없습니다.

public ActionResult Index()
        {
            ViewBag.userName = "조동연";
 
            return View();
        }

 

    <div>
        이름 : @ViewBag.userName <br />
    </div>

 

 

 

 

List에 데이터를 담고 viewbag으로 view단으로 던지는 것도 가능합니다.

public List<string> TestList()
{
    List<string> Student = new List<string>();
    Student.Add("Jignesh");
    Student.Add("Tejas");
    Student.Add("Rakesh");
 
    return Student;
}
ViewBag.Student = this.TestList();
@foreach (var student in ViewBag.Student)
{
    <li>@student</li>
}

 

 

 


 

 

ViewData를 이용한 전달

딕셔너리(Dictionary) 콜랙션으로 되어 있습니다.

뷰백에 비해 속도가 빠릅니다.

값(Value)이 오브젝트로 나오기 때문에 형 변환을 해야 합니다.

 

위의 TestList 메서드를 사용할 때

ViewData["Student"] = this.TestList();
@foreach (var student in ViewData["Student"] as List<string>)
{
    <li>@student</li>
}

 

 

 

 


 

 

 

DATASET 클래스

 

DataSet 클래스는 클라이언트 메모리 상에 존재하는 테이블들을 가지며, 서버와의 연결을 유지하지 않는다.

DataSet 클래스는 개발자가 직접 모든 테이블 구조 만들고 데이터 삽입 등을 할 수 있으나,

일반적으로 DataAdapter (예: SqlDataAdapter)를 이용하여 데이터를 서버로부터 가져와 메모리상의 DataSet에 할당 후 사용한다.

 

public ActionResult Index()
        {

            DataSet ds = new DataSet();
            ds = User_DAL.Select_User();

            return View(ds);
        }
public static DataSet Select_User()
        {
            con.Open();

            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;

            cmd.CommandText = string.Format("SELECT [Num],[Title],[Name],[Date] FROM [TEST_PROFILE].[dbo].[USER] order by [Num] desc");

            cmd.CommandType = CommandType.Text;
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;

            DataSet ds = new DataSet();
            da.Fill(ds, "[TEST_PROFILE].[dbo].[USER]");
            con.Close();

            return ds;
        }
    <tbody>
        @foreach (DataRow row in Model.Tables["[TEST_PROFILE].[dbo].[USER]"].Rows)
        {
        <tr>
            <th>@(row["Num"])</th>
            <th>@(row["Title"])</th>
            <th>@(row["Name"])</th>
            <th>@(row["Date"])</th>
        </tr>
        }
    </tbody>

 

 


 

 

ActionLink

 

<a href="/Home/LoginView?str=a태그">링크</a

a 태그와 같이 동작하는 actionlink

@Html.ActionLink("링크", "LoginView", "Home")

@Html.ActionLink("링크", "LoginView", new { id = 1 })

첫 번째처럼 경로를 명시할 수 도 있고 

두 번째처럼 인자 값을 넣어 연결할 수 도 있다.

 


 

RedirectToAction 메소드

HTML을 랜더링 하는 대신, 다른 액션 메서드를 호출할 때 사용된다. 

 


js  window.location.href

 

javascript로 ajax통신이 아닌 리다이렉트로 url을 이동시켜야할 때 사용한다.

인자값 (ex id)을 url에 넣어 게시물 상세보기가 가능하다.

window.location.href = "https://localhost:44334" + "/Home/About/" + id;

 

 


html form태그 

<form method="post"  action ="/Home/Insert">
	<input type="text" name="Title" placeholder="글 제목">
</form>

<input type="submit" value="글쓰기">

form태그로 식별가능한 name값을 넣고 input type=submit으로 서버에 전송한다

public ActionResult Insert(User user)
        {
            string title = user.Title;
            dbSystem.Insert_User(title);

            return RedirectToAction("Index");
        }

 

 

 

하나의 form태그의 submit 두개 (자바스크립트로 분기한다.)

<input type="button" value="글수정" onclick='return info_chk2(this.form);'>
function info_chk2(frm) {
    frm.action = '/Home/Update';
    frm.submit(); return true;
}

 

 

 


 

+ Recent posts