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;
}