2011-11-11 2 views
4

컨트롤러 속성 : 나는 아이디 + 이름을 사용하지 않는편집 Html.DropDownList 작동하지 않습니다와 @class는

ViewBag.Category = new SelectList(this.service.GetAllCategories(), product.Category); 

. GetAllCategories()는 여러 int 수만 반환합니다.

내가보기에 사용하는 경우 :

@Html.DropDownList("Category", String.Empty) 

모든 작동합니다. 편집은 정상이며 DropDownList는 선택된 값을 보여줍니다. HTML 결과 : 나는 CSS를 사용할 필요가 @class 그래서 나는이 코드를 사용

<select id="Category" name="Category"> 
<option value=""></option> 
<option>1</option> 
<option>2</option> 
<option>3</option> 
<option>4</option> 
<option selected="selected">5</option> 
... 
</select> 

그러나 :

@Html.DropDownList("Category", (IEnumerable<SelectListItem>)ViewBag.Category, new { @class = "anything" }) 

HTML 결과 : 불행하게도

<select class="anything" id="Category" name="Category"> 
<option>1</option> 
<option>2</option> 
<option>3</option> 
<option>4</option> 
<option>5</option> 
... 
</select> 

는, 편집은 여전히 ​​(내가 할 수있는 일 내가 선택한 값을 저장하십시오) 그러나 DropDownList는 데이터베이스에 저장된 값이 아닌 기본값을 표시하기 시작합니다.

어떤 문제가 있다고 생각하십니까?

업데이트 더 정확한 업데이트를했습니다.

메소드 GetAllCategories

은 다음과 같습니다

public List<int> GetAllCategories() 
     { 
      List<int> categories = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; 

      return categories; 
     } 

답변

6

매우 흥미로운 Html.DropDownList 작품 :
당신이 제공된 속성 이름에 따라 ViewData/ViewBag에서 선택의 값을 조회합니다

@Html.DropDownList("Category", String.Empty) 

선택 목록을 제공하지 않는 경우 : Category .
선택 목록을 제공하면 제공되는 속성 이름 Category을 기반으로 ViewData/ViewBag에있는 기본 선택된 항목을 찾을 수 있습니다. 물론 기본 값 대신 목록이 포함됩니다.

@Html.DropDownList("CategoryDD", (IEnumerable<SelectListItem>)ViewBag.Category, new { @class = "anything" })

:

@Html.DropDownList("Category", null, new { @class = "anything" })

또는
대신 ViewBag 속성 이름 Category의 다른 이름을 사용

선택 목록을 제공하지 마십시오 : 당신은 두 가지 옵션이이 문제를 해결하려면

+0

당신은 남자입니다. 나는 완전히 null 가능성을 간과했다 (그것은 "codeblindness"와 같은 것이어야한다 ;-). @ Html.DropDownList ("Category", null, new {@class = "anything"})는 문제를 해결합니다. – nubm

0
나는 당신의 테이블에서 생각
SelectList typelist = new SelectList(this.service.GetAllCategories(), "ProductID", "ProductName", product.Category); 
ViewBag.Category=typelist; 

가 기본 값 "제품 ID"텍스트 "제품 이름"또는 사용하는 하나의 유의점해야하고 표시 할 이 결과에 대해 목록을 생성 할 수 있습니다.

정확히 어떤 문제인지는 모르겠지만 시도해보십시오. 문제가 해결 될 수도 있습니다.

+0

범주는 db에 저장된 int 값입니다. 그것은 FK가 아닙니다. – nubm

+0

목록에 값 및 텍스트 값을 입력해야한다고 생각합니다. 그렇지 않으면 목록에 항목이 없을 것입니다. –

0

html 도우미의 드롭 다운 목록을 사용할 수 있습니다. 뷰에 "모델"이 필요합니다.

@Html.DropDownListFor(model => model.savedID, 
    (IEnumerable<SelectListItem>)ViewBag.Category, new { @class = "anything" }) 
+0

나는 이것을 시도했지만 동작에는 변화가 없다. – nubm

관련 문제