2012-10-19 2 views
0

Html.DropDownListFor를 사용하여 선택한 값을 표시하는 데 문제가 있습니다. 여러 개의 드롭 다운을 사용하는보기가 있습니다. 모든보기가 채워지지만 아무것도 선택되지 않습니다. 모든 드롭 다운에 대해 동일한 선택 항목을 갖지만 선택된 여러 가지 값이 있습니다.DropDownList 선택된 값을 표시하지 않습니다.

var statuses = DataAccess.GetPersonTargetStatuses(); 
TargetStatuses = new SelectList(statuses, "PersonTargetStatusUuid", "PersonTargetStatusName"); 

내 PersonTarget 클래스 : 나는 selectList의 만드는 방법은 그

public class ViewPersonTargetingViewModel 
{ 
    public List<PersonTarget> Targets { get; set; } 
    public SelectList TargetStatuses { get; set; } 
} 

: 여기 내 뷰 모델의

public class PersonTarget 
{ 
    public string PersonTargetStatusName { get; set; } 
    public Guid PersonTargetStatusUuid { get; set; } 
    //and more 
} 

을 그리고 이것은 내가 DropDownList로 만드는 방법은 다음과 같습니다

<%: Html.DropDownListFor(model => model.Targets[k].PersonTargetStatusUuid, Model.TargetStatuses)%> 여기서 k는 Targe를 통한 반복이다. TS 목록.

내가 드롭 다운을 모두 채울 같은 selectList의를 사용,이 같은 정보를 포함

  • 텍스트 : 값 : b2e4a939-06d8-4052-8abf-5c1b2a5e8591
  • 텍스트 : B 값 : 0b59faaa-514D-4212-93cd-6b0a50b8f151
  • 텍스트 : C 값 : 5575f3cf-33f8-41df-be73-a176a3db5ed5 예를 들어

, 나는 그것이 "B"를 표시 얻으려고 할 때, I 그에게 정확한 목표 지위를 주겠지 만 여전히 첫 번째 요소 ("A")를 선택하면, 나는 심지어 내가 그에게주는 값을 출력하고, Model.Targets[k].PersonTargetStatusUuid 값은 0b59faaa-514d-4212-93cd-6b0a50b8f151 ("B"의 Guid)이지만, 그것은 여전히 ​​"A"를 표시합니다. 이 문제를 해결하는 방법이 부족했습니다. 어떤 도움을 주셔서 감사합니다, 감사합니다 :).

답변

0

마지막으로 문제는 내 단일 목록에 거짓말을했습니다. 어떤 이유로 든 개별 드롭 다운을 다른 목록에서 채워야합니다. 이제는 모두 작동합니다.

0

SelectedValue 속성을 SelectList으로 설정해야합니다. 이 같은 예를 들어

<%: Html.DropDownListFor(model => model.Targets[k].PersonTargetStatusUuid, new SelectList(Model.TargetStatuses, "PersonTargetStatusUuid", "PersonTargetStatusName", Model.Targets[k].PersonTargetStatusUuid)) %> 
+0

시도해 보았습니다. 작동하지 않았습니다. 나중에 DropDownListFor 실제로 SelectList에서 SelectedValue 속성을 사용하지 않는 알게 된, 그냥 SelectList 일반적인 목록처럼 사용합니다. –

0

나는 빠른 & 더러운 시험 프로그램을 만들어 완벽하게 일했다.

당신은 귀하의 질문에 언급,하지만 난 한 번 확인 거라고 :

  • 당신의 선택 목록의 HTML은
  • 귀하의 PersonTargetStatusUuid가 올바른지 적절한 값을 & 이름을 가지고

컨트롤러 :

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var colours = new List<CarColour>() { new CarColour() { Id = Guid.NewGuid(), Colour = "Red" }, new CarColour() { Id = Guid.NewGuid(), Colour = "Blue" }, new CarColour() { Id = Guid.NewGuid(), Colour = "Green" } }; 
     ViewData["Colours"] = new SelectList(colours, "Id", "Colour"); 

     var car = new Car() { Id = Guid.NewGuid(), Name = "GreenCar", Colour = colours.First(cc => cc.Colour == "Green") }; 
     return View(car); 
    } 
} 

public class Car 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
    public CarColour Colour { get; set; } 
} 

public class CarColour 
{ 
    public Guid Id { get; set; } 
    public string Colour { get; set; } 
} 

색인 :

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<CarTest.Controllers.Car>" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Index 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <%: Html.LabelFor(m => m.Id) %> 
    <%: Html.TextBoxFor(m=> m.Id) %> 

    <%: Html.LabelFor(m => m.Name) %> 
    <%: Html.TextBoxFor(m=> m.Name) %> 

    <%: Html.LabelFor(m => m.Colour) %> 
    <%: Html.DropDownListFor(m=> m.Colour.Id, ViewData["Colours"] as IEnumerable<SelectListItem>) %> 

</asp:Content> 
+0

예제에는 하나의 드롭 다운 목록이 포함되어 있습니다. 둘 이상의 드롭 다운 목록을 사용하면 문제가 시작되고 컬렉션에서 모두 채워집니다. –

관련 문제