2017-03-01 8 views
-1

면도기보기에서 작동하지 않습니다 Visual Studio에서 설정 선택된 값은 내가 내 컨트롤러이이

빠른 시계 (유형 List<SelectListItem>이다)을 CountriesSl가 선택한 값이 있는지 확인

[Route("Checkout")] 
public ActionResult Checkout() 
{ 
    var sb = new ShoppingBagViewModel(); 
    sb.DestinationCountry = "Netherlands"; // I hoped that this was sufficient 
    sb.CountriesSl.Single(c => c.Text.Equals("Netherlands", StringComparison.InvariantCultureIgnoreCase)).Selected = true; 
    return View(sb); 
} 

. (네덜란드)

이 내 면도기이다 :

@Html.DropDownListFor(m => m.DestinationCountry, Model.CountriesSl) 

DestinationCountry 또한 내 뷰 모델의 캐릭터 소품이다. 많은 비슷한 질문이 있다는 것을 알고 있지만 많은 것을 보았습니다. 나는 그것을 보지 못했습니다. 나는 또한 시도 :

@Html.DropDownListFor(m => Model.DestinationCountry, Model.CountriesSl) 

는 나에게 대답을 줄뿐만 아니라, 내 실수가 무엇인지 설명하지 마십시오.

편집 문제가 무엇인지 명확하게하려면 : 내 면도기 뷰에서 멋진 옵션 목록을 얻지 만 첫 번째 항목 만 "선택됨"입니다. 생성 된 html을 보면 선택한 항목이 없습니다.

public List<SelectListItem> CountriesSl 
{ 
    get 
    { 
     List<SelectListItem> _countries = HttpContext.Current.Cache["slCountries"] as List<SelectListItem>; 
     if (_countries == null) 
     { 
      _countries = new List<SelectListItem>(); 
      foreach (string s in System.IO.File.ReadLines(System.Web.Hosting.HostingEnvironment.MapPath("~/tmpwrite/countries.csv"))) 
      { 
       var tmp = s.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); 
       _countries.Add(new SelectListItem() { Text = tmp[1], Value = tmp[0], Selected = false }); 
      } 
      HttpContext.Current.Cache.Add("slCountries", _countries.OrderBy(c => c.Text).ToList(), null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(24, 0, 0), System.Web.Caching.CacheItemPriority.Normal, null); 
     } 
     return _countries; 
    } 
} 
+0

어떻게'List '을 채우고 있습니까? 'text'뿐만 아니라'value' 속성을 설정합니까? – Ric

+0

이상하게도 질문과 두 답변 모두 -1 점을 받았고 모든 것이 다운 된 이유는 없습니다. –

답변

-1

DropDownListFor 시도 릭에 대한

편집은 자동으로 제공 열거받는 속성의 값과 일치합니다. 나는 또한 이것에 처음에는 문제가 있었다.

대신에 뷰 모델에있는 엔티티 목록을 제공하십시오. 보통 IDictionary<int, string>과 같은 것을 사용합니다. 다음과 같이 드롭 다운을 만듭니다.

Html.DropDownListFor(m=>m.DestinationCountry, new SelectList(Model.Countries, "Key", "Value")) 

그런 다음 SelectList는 Key가 DestinationCoutry와 일치하는 올바른 옵션을 자동으로 설정합니다.

+0

아마도 텍스트 값을 사용하여 값 대신 선택하도록 설정했을 것입니다. 아마도 'DestinationCountry'를 selecteditem의 텍스트 prop 대신 드롭 다운의 값으로 채울 때 이것은 모두 수정되었습니다. –

+0

언급 한 값을 사용해야하며, 코드를보고 값 == 텍스트가 작동하는지 확인하고 싶을뿐입니다. – Ric

+0

롤 나는 그것을 텍스트 값을 기반으로하고 그 뒤에 코드에서 일치하려고했습니다. 그러나 면도칼은 그것을 무시하고 오직 가치와 함께 작동합니다. 이것은 올바른 방향으로 나를 가리키며 대답으로 표시 할 것입니다. 감사! –