여러 개의 드롭 다운 목록을 표시해야하는 경우보기 모델을 조정해야 할 수 있습니다.
public class ItemsViewModel
{
public string Label { get; set; }
public string SelectedId { get; set; }
public IEnumerable<SelectListItem> Values { get; set; }
}
public class MyViewModel
{
public IEnumerable<ItemsViewModel> Items { get; set; }
}
다음이보기 모델 웁니다 컨트롤러 액션이 : 그럼 예를 들어 보자
public ActionResult Index()
{
var model = new MyViewModel
{
Items = new[]
{
// TODO: fetch from your repository
new ItemsViewModel
{
Label = "label 1",
Values = new[]
{
new SelectListItem { Value = "1", Text = "item 1" },
new SelectListItem { Value = "2", Text = "item 2" }
}
},
new ItemsViewModel
{
Label = "label 2",
// Automatically preselect the second item in the ddl
SelectedId = "B",
Values = new[]
{
new SelectListItem { Value = "A", Text = "foo1" },
new SelectListItem { Value = "B", Text = "bar" }
}
},
}
}
return View(model);
}
을 및 다음 해당하는 강력한 형식의보기가 있습니다
<table>
<thead>
<tr>
<th>Label</th>
<th>Values</th>
</tr>
</thead>
<tbody>
<%= Html.EditorFor(x => x.Items)
</tbody>
</table>
와의를 해당 편집기 템플릿 (~/Views/Shared/EditorTemplates/ItemsViewModel.ascx
) :
<%@ Control
Language="C#"
Inherits="System.Web.Mvc.ViewUserControl<AppName.Models.ItemsViewModel>"
%>
<tr>
<td>
<%: Model.Label %>
</td>
<td>
<%= Html.DropDownListFor(
x => x.SelectedId,
new SelectList(Model.Items, "Values", "Text")
) %>
</td>
</tr>
답변 해 주셔서 감사합니다. 당신의 솔루션이 효과가 있는지 확인하려고합니다. 사용할 수 있다면 말입니다. 솔루션을 구현하기 위해 편집기 템플릿을 사용해야합니까? – PetersLast
@PetersLast, 내 솔루션은 이미 편집기 템플릿을 사용합니다. –
감사합니다. 언젠가 (편집자 템플릿의 개념을 배웠을 때) 모든 감각으로 코드를 바꾼 후에 마침내 결과를 실행합니다. 당신의 대답에 대해 너무 고마워요. – PetersLast