2012-10-11 4 views
0

DropDownList 컨트롤이 내 모델 TaskDetailsModel 내에 있습니다.MVC3 Html.DropDownList - DropDownList 값이 변경되지 않습니다.

<%= Html.DropDownListFor(model => model.TaskType, new SelectList(Model.TaskTypeDisplayNames, Model.TaskTypes))%> 

내 모델의 해당 클래스는 다음과 같은 속성 선언을 포함합니다 : 나는 내 DropDownList로 선언 한 사용자에게 모든로드 및 표시

public class TaskDetailsModel 
{   
    [DisplayName("Task Type")] 
    public TaskType TaskType { get; set; } 

    public List<TaskType> TaskTypes = new List<TaskType> { TaskType.Decommission, TaskType.Install, TaskType.Modify, TaskType.Move, TaskType.Other, TaskType.Rename }; 
    public List<string> TaskTypeDisplayNames = new List<string> { "Decommission", "Install", "Modify", "Move", "Other", "Rename" }; 
} 

을 때 - 올바른 TaskType 선택이 이루어지고있다. 즉, 기본값이 아닌 선택 옵션을 사용하여로드하는 데 문제가 없습니다. 따라서이 코드의 적어도 일부가 올바르게 작동한다고 생각합니다.

그러나 선택 항목에 대한 변경 사항은 손실됩니다. 내 양식을 다시 서버에 게시하려고 할 때 - 선택한 옵션이 절대로 변경되지 않습니다. 나는 그러한 행동을하기 위해 내가 뭘 잘못하고 있는지 궁금해하고 있었다.

업데이트 :

public TaskDetailsModel(Task task) 
{ 
    TaskType = task.TaskType; 
} 

//Client-side code to retrieve form values: 
var getDialogData = function() { 
    var dialogData = {}; 

    $(workflowDialogContent).find('input,p,select').each(function() { 
     if ($(this).is('input')) { 
      dialogData[this.id] = $.trim($(this).val()); 
     } 
     else if ($(this).is('select')) { 
      //At this point in time the selected option does not match what I see on the screen. The user has modified the selected value. I do not see it reflected here. 
      console.log("Inside here for:", this); 
      dialogData[this.id] = $.trim($(this).find('option:selected').val()); 
     } 
     else { 
      dialogData[this.id] = $.trim($(this).text()); 
     } 
    }); 

    return JSON.stringify(dialogData); 
}; 
+0

데이터베이스에 Dropdownlist 값을 저장하고 페이지를 다시 표시 할 때 검색 중입니까? –

+0

값이 데이터베이스에서 검색됩니다. TaskDetailsModel의 생성자에서 TaskType 속성에 기록됩니다 (이 내용을 원래 게시물로 편집합니다). 선택한 옵션은 클라이언트에 의해 변경 될 수 있습니다. 그런 다음 대화 상자 창이 닫히고 서버로 돌아 가기 전에 선택한 옵션을 살펴 봅니다. 선택한 옵션이 화면에 표시된 옵션과 일치하지 않습니다. –

+0

다시 게시 할 때까지 아무 일도 일어나지 않습니다. 이 때 드롭 다운의 값은 POST 컨트롤러 메소드에서받는 모델 객체에 있어야합니다. –

답변

0

를 사용한다 jQuery를 사용하여 드롭 다운의 선택된 값을 얻으려면 나는 내 열거 값의 이름을 변경하고 있음 외관상으로 부적당 한 유행. 서버에 다시 전달할 때 손실되는 유일한 값은 공백이있는 선택입니다. (예 : 'Decommission'으로 변경하는 것은 좋지만 '고객 대기 중'으로 변경하는 것은 제대로 변환되지 않습니다).

0

이 문제는 사실과 실제로,

$('#dropdownid').val(); 
관련 문제