0
나는이에 대한 질문의 톤 ( this thisthis)이있는 알고

있습니다 내가 읽은 몇 가지 질문을 선택,하지만 난 도움이 아무것도 발견되지 않았다ASP.NET MVC @ Html.DropdownListFor는 잘못된 값

을 내보기에 나는

public static SelectList GetPriorityDropDown() 
    { 

     List<SelectListItem> result = new List<SelectListItem>(); 
     SelectListItem low = new SelectListItem(); 
     low.Value = "0"; 
     low.Text = "Niedrig"; 
     SelectListItem middle = new SelectListItem(); 
     middle.Value = "1"; 
     middle.Text = "Mittel"; 
     SelectListItem high = new SelectListItem(); 
     high.Value = "2"; 
     high.Text = "Hoch"; 
     return new SelectList(new SelectListItem[] { middle, high, low }, "Value", "Text", "1"); 

    } 

내가 값 1 항목이 선택했지만 FOLL를 기대 내 도우미에서

@Html.DropDownListFor(m => m.AktPriority, CustomHTMLHeper.GetPriorityDropDown(),new { @class = "form-control" }) 

이 HTML이 생성되었습니다.

<select name="AktPriority" id="AktPriority" class="form-control"> 
    <option value="1">Mittel</option> 
    <option value="2">Hoch</option> 
    <option value="0" selected="selected">Niedrig</option> 
    </select> 

도우미에서 Selected 속성을 true로 설정해 보았습니다. 이것도 작동하지 않았다. 당신이 컨트롤이 목록의 첫 번째 값을 선택 아무것도 선택하지 않은 경우 도우미에서

+0

모델 클래스 코드와 컨트롤러 코드를 추가 할 수 있습니까? – ekad

+0

나는 당신의 문제점이 여기에있는 답변과 비슷하다고 생각한다 : http://stackoverflow.com/a/20008816/244353 – Mrchief

답변

1

당신은 당신의 행동 방법을 게시하지 않았다, 그러나 당신이 사용하는 경우 DropDownListFor 당신은 모델의 "선택"값을 설정해야합니다

model.AktPriority = "1"; 

return View(model); 
+1

그냥 똑같은 것을 올렸다 : D –

0

middle.Selected = true; 

나는 기본적으로 생각 다음 줄을 추가합니다.

미안하지만, 그 라인을 보지 못했습니다. 결과를 채우는 시도하고 selectList의의 수익에

return new SelectList((IEnumerable<SelectListItem>)result, "Value", "Text", "1"); 
+0

나는 이것이 작동하지 않았 음을 나에게 썼다. –

1

OP에서 더 많은 정보를 제공하기 위해 더 많은 코드를 복사하는 동안 실수를 직접 발견했습니다. 내 모델에서

[HTTPGet] 
ActionResult Create() 
    { 
    return View(new ActivityModel()) 
    } 

선택된 값의 값이 int로 저장됩니다 내가 가진 빈 양식을 반환 내 컨트롤러 얻을-방법에서는

.

[HTTPGet] 
ActionResult Create() 
    { 
    ActivityModel = new ActivityModel(); 
    model.AktPriority = 1; 
    return View(model) 
    } 
2

이었다 간단한 1.

솔루션의 기본 값을 오버라이드 (override)되어 INT의 기본 값보다 같이 나는 비어있는 새 모델을 만들 때 그래서 당신은 모두 설정 시도 이후 SelectListItemSelected 속성을 으로 지정하면 SelectList을 만들 때 선택된 값을 실제로 지정하므로이 오류가 계속 발생할 수있는 유일한 시나리오가 있습니다. 당신은 명확하게 말하지 않았지만, 제 생각에 이것은 게시 된 데이터가없고 기존 데이터가없는 작성보기와 같은 초기 페이지로드에서만 문제가된다는 것입니다.

그 중 하나의 시나리오에서 사용자가 지정하지 않은 속성은 기본값이 0이므로 이라고 가정합니다. 면도기는이 기본 값과 일치하는 항목을 자동으로 선택합니다.당신은 기본적으로 선택 값 1과 옵션을 원한다면, 당신은 실제로 속성의 기본값을 확인해야합니다 :

여기
private int? apkPriority; 
public int ApkPriority 
{ 
    get { return apkPriority ?? 1; } 
    set { apkPriority = value; } 
} 
0

이 (모델과 SelectedValue 솔루션을 만료 후) 또 다른 가능성이다. 내가 MVC 변수 이름이 같은 경우 모델 대신 ViewBag 값을 사용하는 것을 선호합니다 발견했습니다 알 수없는 이유로

ViewBag.AktPriority = 0; 

@Html.DropDownListFor(m => m.AktPriority, CustomHTMLHeper.GetPriorityDropDown(),new { @class = "form-control" }) 

. 해결책은 이름을 바꾸는 것이 었습니다.