2011-03-16 3 views
0

내 응용 프로그램에서 표시 줄에 연결된 일부 드롭 다운 목록을 표시해야합니다.루프에서 여러 번 호출 된 일부 드롭 다운 목록에서 선택한 값을 가져 오는 방법은 무엇입니까?

<table> 
     <% foreach (var item in Model) { %> 
       <td> 
       <%= Html.Encode(item.COMPETENCE_LIBELLE) %> 
      </td> 
      <td> 
       <%= Html.DropDownListFor(item.FK_NIVEAU_ID, (SelectList)ViewData["FK_Niveau"]%> 
      </td> 
<% } %> 
</table> 

는 그러나, 나는 ... 내 ddlist의 선택된 값이 표시되지 않습니다 이유를 잘 모릅니다

나는 하나의 ddlist의 선택된 값을 표시 할 수있는 문제가 생겼를 havent

있지만를 A의 루프 ... 나는 무엇을 해야할지 모르겠다 ...

어떤 생각?

답변

0

여러 개의 드롭 다운 목록을 표시해야하는 경우보기 모델을 조정해야 할 수 있습니다.

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> 
+0

답변 해 주셔서 감사합니다. 당신의 솔루션이 효과가 있는지 확인하려고합니다. 사용할 수 있다면 말입니다. 솔루션을 구현하기 위해 편집기 템플릿을 사용해야합니까? – PetersLast

+0

@PetersLast, 내 솔루션은 이미 편집기 템플릿을 사용합니다. –

+0

감사합니다. 언젠가 (편집자 템플릿의 개념을 배웠을 때) 모든 감각으로 코드를 바꾼 후에 마침내 결과를 실행합니다. 당신의 대답에 대해 너무 고마워요. – PetersLast

관련 문제