2017-11-15 6 views
0

mvc의 SelectList에서 ID 값이 아닌 이름 값을 가져 오려고합니다. 여기 mvc의 SelectList에서 이름 값을 얻는 방법

컨트롤러 내 코드입니다

var occupationList = new SelectList(new[] 
{ 
    new { ID = 1, Name = "Student" }, 
    new { ID = 2, Name = "House Wife" }, 
    new { ID = 3, Name = "Business Man" }, 
    new { ID = 4, Name = "Service Man" }, 
}, 
"ID", "Name", 1); 
ViewData["occupationList"] = occupationList; 
return View(); 

보기 내가 그 시간에 드롭 다운리스트에서 항목을 선택하면

@Html.DropDownList("Occupation", ViewData["occupationList"] as SelectList, new {@class="control-label", style="width:250px;" }) 
이제

, 그것은 선택한 항목을 보여줍니다하지만 ID를 저장 값.

예 : 드롭 다운 목록에서 Student 이름 값을 선택하고 저장합니다. 이제는 데이터베이스에 1 값을 저장합니다.

하지만 ID 값 즉 1을 저장하고 싶지 않습니다. 이름 값 (예 : Student)을 데이터베이스에 저장하려고합니다.

감사합니다.

+0

가능한 복제 https://stackoverflow.com/questions/4579598/c-sharp-mvc-3-using-selectlist-with- selected-value-in-view) –

+0

@TheBeardedLlama 그것은 중복되지 않습니다. 두 질문을주의 깊게 읽으십시오. –

답변

2

양식을 제출할 때 선택한 옵션의 값 특성은 브라우저에서 해당 선택 요소에 대한 서버로 전송됩니다. 당신이 숫자 ID 대신 이름을 보내려면, 당신은

var occupationList = new SelectList(new[] 
    { 
     new { ID = 1, Name = "Student" }, 
     new { ID = 2, Name = "House Wife" }, 
     new { ID = 3, Name = "Business Man" }, 
     new { ID = 4, Name = "Service Man" }, 
    }, 
    "Name", "Name", "Student"); 
ViewData["occupationList"] = occupationList; 

로보기 코드가 동일합니다 대신 아이디의 이름 위해 selectList의의 데이터 값 필드를 설정해야합니다

@Html.DropDownList("Occupation", ViewData["occupationList"] as SelectList, 
            new {@class="control-label", style="width:250px;" }) 

이렇게하면 값과 텍스트가 같은 필드로 설정된 SELECT 요소에 대한 마크 업이 렌더링됩니다.

<select id="Occupation" name="Occupation"> 
    <option value="Student" selected="selected">Student</option> 
    <option value="House Wife">House Wife</option> 
    <option value="Business Man">Business Man</option> 
    <option value="Service Man">Service Man</option> 
</select> 

이전에 양식을 제출할 때 숫자 ID 대신 문자열 값이 제출됩니다. 즉, 문자열 값을 받아서 저장하려면 서버 측 코드를 조정해야합니다 (숫자 값 대신 문자열 값을 저장하는 db 스키마를 업데이트해야 할 수도 있음)

1

이름을 저장하려면이 코드를 사용하십시오 DB에서

@Html.DropDownList("Occupation", new SelectList(ViewData["occupationList"] as SelectList, "Name", "Name") , new { @class = "control-label", style = "width:250px;" }) 
[C# 1 MVC 뷰에서 선택된 selectList의 값을 사용하여 (3) (의