asp.net MVC5
1. 다음은 movie 를 create 하려는 페이지 모양입니다
------------------------------
Title : [textbox]
Genre : [dropdownlist]
[Create]
------------------------------
2. model : (a)(b) 필드 이름이 다름
Movie model
----------------
ID
Title
ReleaseDate
Genre <------------ (a)
Price
Genre model
---------------
ID
GenreName <---------(b)
3. 다음은 cshtml 페이지의 genre 를 표현한 2 가지 경우의 dropdownlist 입니다
(1) @Html.DropDownListFor(model => model.Genre, new SelectList(ViewBag.list),
"Select Genre", htmlAttributes: new { @class = "form-control" })
(2) @Html.DropDownListFor(model => model.Genre, new SelectList(ViewBag.list, "ID", "GenreName"),
"Select Genre", htmlAttributes: new { @class = "form-control" })
4.
다음은 Control 에서 Create 창으로 넘기는 코드 입니다.
view 페이지의 genre dropdownlist 에서 default 를 "Comedy" 로 하고 싶습니다
아래 1 번으로 하고, view 페이지를 위의 3-(1) 로 하면 "Comedy" 로 select 됩니다.
아래 2 번으로 하고, view 페이지를 위의 3-(2) 로 하면 default 값, "Select Genre" 이 됩니다
2번으로 해야 하는 경우는 어떻게 해야 할까요?
model (=table) 에서 이름이 다를 때 (Movie.Genre, Genre.GenreName) 는 어떻게 처리해야 하는지요?
public ActionResult Create()
{
// (1)
var list = new List<string>() { "Action", "Drama", "Romantic", "Comedy", "Muscial", "Other" };
// (2)
var list = new List<Genre>()
{
new Genre() { ID = 1, GenreName = "Action"},
new Genre() { ID = 2, GenreName = "Drama"},
new Genre() { ID = 3, GenreName = "Romantic"},
new Genre() { ID = 4, GenreName = "Comedy"},
new Genre() { ID = 5, GenreName = "Musical"},
new Genre() { ID = 6, GenreName = "Other"}
};
ViewBag.list = list;
Movie movie = new Movie()
{
Genre = "Comedy"
};
return View(movie);
}