2009-08-25 5 views
0

나는 다음에 가깝다 다운 목록을 선택 드롭이있는 ASP.NET MVC 프로젝트에서 양식이 : 나는 GUID 식별자로 뭔가를해야 할 프로젝트에 나중에 페이지에서ASP.NET MVC에서 선택한 옵션의 텍스트를 가져 오는 방법은 무엇입니까?

<select> 
    <option value="ee5711b9-ec86-4378-a975-ae10a4ebedbc">Volvo Account</option> 
    <option value="0dc0e9d8-2245-43de-81a9-5b94c19646fa">Saab Account</option> 
    <option value="f9a05ef6-9ca6-4eeb-9e04-79726a62b38c">Mercedes Account</option> 
    <option value="1c5c2e43-06d6-4b7d-916a-231be535a608">Audi Account</option> 
</select> 

을하지만, 먼저 사용자에게 확인을 요청해야합니다. 분명히 GUID는 그 (것)들에게 무용하다. 그리고 그들은 더 친숙한 이름 (즉, "Volvo Account")을보고 싶어한다.

그러나 FormCollection 값을 드릴링 할 때 얻을 수있는 것은 선택한 옵션의 텍스트가 아닌 값입니다. 이는 디자인 목표에서 의미가 있지만 어떻게 텍스트 값을 POST 할 수 있습니까?

몇 가지 해결 방법 (JavaScript로 숨겨진 필드를 설정하고, GUID로이 사실을 조회 한 후이 방법을 사용하여 조회를 수행하는 등)을 생각할 수 있지만이를 수행 할 intrinisc 방법이 있습니다. 실종 됐어?

답변

2

본질적인 방법은 없지만 JavaScript가 가장 좋습니다.

숨겨진 입력의 값을 선택한 OPTION의 표시 값으로 설정하는 "onchange"이벤트 처리기를 SELECT에 추가하십시오.

+0

값이 변경되지 않으면 어떻게됩니까? 나는 그것에 동의하지 않는다. 그러나 클라이언트가 원하는 방식으로, 목록의 첫 번째 값은 유효하다. (그래서 그들은 그것을 바꾸고 싶지 않을 때 오른쪽을 클릭 할 수있다.) –

+1

당신은 값을 설정할 수있다. 숨겨진 입력을 사용하여보기에서 SELECT 입력의 값을 매우 쉽게 일치시킬 수 있으며 JavaScript 와이어 링 처리가 변경되도록 할 수 있습니다. 페이지가 준비된 스크립트를 실행하고 페이지가로드되면 숨겨진 입력을 선택한 값으로 설정할 수 있습니다. – JMP

0

사용하여 숨겨진 필드 :

<select> 
    <option value="ee5711b9-ec86-4378-a975-ae10a4ebedbc">Volvo Account</option> 
    <option value="0dc0e9d8-2245-43de-81a9-5b94c19646fa">Saab Account</option> 
    <option value="f9a05ef6-9ca6-4eeb-9e04-79726a62b38c">Mercedes Account</option> 
    <option value="1c5c2e43-06d6-4b7d-916a-231be535a608">Audi Account</option> 
</select> 
... 
<input type="hidden" name="Options[0].Key" value="ee5711b9-ec86-4378-a975-ae10a4ebedbc" /> 
<input type="hidden" name="Options[0].Value" value="Volvo Account" /> 
<input type="hidden" name="Options[1].Key" value="0dc0e9d8-2245-43de-81a9-5b94c19646fa" /> 
<input type="hidden" name="Options[1].Value" value="Saab Account" /> 
... 

컨트롤러 :

public ActionResult SomeAction(..., IDictionary<string, string> options) 
{ 
    string selectedValue = ...; 
    string selectedText = options[selectedValue]; 
} 
0
나는 보통 모델의 컬렉션 클래스 내 정적 속성과 MVC에서 드롭 다운/선택 박스를 처리

.

예 : 이제 컬렉션이 전체 응용 프로그램에서 사용할 수 있습니다

<%= Html.DropDownList("AccountType", new SelectList(SomeProject.Models.Collections.AccountType, "Key", "Value", Convert.ToString(ViewData["AccountType"])), "", new { tabindex = "3", @class = "dropdown" }) %> 

:

using System.Collections.Generic; 

namespace SomeProject.Models 
{ 
    public class Collections 
    { 
     public static Dictionary<string, string> AccountType = new Dictionary<string, string> 
     { 
      { "", "" }, 
      { "ee5711b9-ec86-4378-a975-ae10a4ebedbc", "Volvo Account" }, 
      { "0dc0e9d8-2245-43de-81a9-5b94c19646fa", "Saab Account" }, 
      { "f9a05ef6-9ca6-4eeb-9e04-79726a62b38c", "Mercedes Account" }, 
      { "1c5c2e43-06d6-4b7d-916a-231be535a608", "Audi Account" } 
     }; 
    } 
} 

그런 다음 내가 좋아하는보기의 드롭 다운을 렌더링합니다. 당신이 원하는 경우에도보기 밖으로 컬렉션을 렌더링 할 수

SomeProject.Models.Collections.AccountType[ViewData["AccountType"]] 

: 당신은을 통해 원하는대로 사용자에게 친숙한 이름을 잡을 수 있습니다.

희망이 있습니다.

관련 문제