2011-03-28 3 views
2

나는이 목록에있는에도 불구하고 항목을 선택하지 않습니다 어떤 이유로 selectedItems를위한 selectedValue 옵션 문제를, ... 데selectList의 개체 selectedValue 문제

내 컨트롤러 :

public ActionResult CreateTransformer(string edit) 
{  
      var equipment = GenIDQueries.FindEquipment(edit); 
      ViewData["Feeder"] = new SelectList(GenIDQueries.GetFeeders(equipment.OpsCentre.ToString()), 
               "CircuitID", 
               "CircuitDescription", 
               equipment.Feeder); 
     return View(equipment); 
    } 

equipment.Feeder는 Integer 유형입니다.

내보기 :

<p> 
       <b><%=Html.LabelFor(m=>m.Feeder) %>:</b><font color="red">*</font> 
       <%=Html.DropDownListFor(m=>m.Feeder, ViewData["Feeder"] as SelectList, "") %> 
       <%= Html.ValidationMessageFor(m => m.Feeder)%> 
      </p> 

내 GenIDQueries.GetFeeders : 내가 선택하고 싶은 요소가 실제로 GenIDQueries에 의해 반환되는 것을 확인했다

public static IEnumerable<Circuit> GetFeeders(string distNo) 
     { 
      int distNoNumber; 
      if (int.TryParse(distNo, out distNoNumber)) 
      { 
       return ActiveRecordLinq.AsQueryable<Circuit>() 
       .Where(x => x.DistrictCircuitRelations 
          .Any(y => y.District.DistrictNo == distNoNumber)) 
       .OrderBy(x => x.CircuitDescription) 
       .Select(x => new Circuit 
       { 
        CircuitID = x.CircuitID, 
        CircuitDescription = x.CircuitDescription 
       }); 
      } 
      return new List<Circuit>(); 
     } 

그러나 페이지가로드 그것은 결코 선택 그 옵션은 HTML 소스 코드에서 항목도 선택되지 않습니다.

도움 주셔서 감사합니다.

답변

2

선택한 값을 설정하는 경우 피더 개체가 아닌 으로 설정해야합니다.

+0

그래 그것이

보기 모델은 ASP.NET MVC에 갈 수있는 방법입니다 . 재미있는 점은 새 선택 목록을 변수에 넣었고 항목이 선택되었음을 나타냅니다. 그러나 페이지가로드 될 때 선택하지 않습니다 – ChickSentMeHighE

1

왜 이것을 사용하고 있습니까? Plague of ViewData? 바이러스가 마이크로 소프트 오픈 스페이스 연구소에서 시작되어 인터넷 블로그 게시물 및 기사를 통해 확산됨에 따라 나는 ViewData을 고려합니다.

모델 :

public class MyViewModel 
{ 
    public string SelectedValue { get; set; } 
    public IEnumerable<SelectListItem> Items { get; set; } 
} 

컨트롤러 :

public ActionResult CreateTransformer(string edit) 
{  
    var equipment = GenIDQueries.FindEquipment(edit); 
    var items = GenIDQueries.GetFeeders(equipment.OpsCentre.ToString()); 
    var model = new MyViewModel 
    { 
     SelectedValue = equipement.CircuitID, 
     Items = new SelectList(items, "CircuitID", "CircuitDescription") 
    }; 
    return View(model); 
} 

보기 :

<%= Html.DropDownListFor(m => m.CircuitID, Model.Items, "") %> 
<%= Html.ValidationMessageFor(m => m.CircuitID) %> 
+0

ViewData가 전염병이라는 점에 동의합니다.이 방법 만 사용했습니다. 내 사건을 디버깅해라. View : new SelectList (GenIDQueries.GetFeeders ("1"), "CircuitID", "CircuitDescription", Model.Feeder)에 다음을 추가하면 SelectList가 해당 항목을 찾고 "Selected"항목의 속성이 true이고, 그러나 페이지가로드 될 때 항목이 선택되지 않았습니다. – ChickSentMeHighE

+0

MVC2를 처음 접했을 때 저는 확실히 ViewData에 대한 귀하의 관점을 배우고 싶습니다. 그러나 전염병에 관한 위키 백과 문서로 연결되는 "Plague of ViewData"라는 제목의 링크를 게시하는 것은 나에게 위배 된 결과를 낳습니다. ViewData를 피해야한다고 주장하는 경우 이유를 밝히거나 실제 참조를 게시하십시오. – Faust