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);
};
데이터베이스에 Dropdownlist 값을 저장하고 페이지를 다시 표시 할 때 검색 중입니까? –
값이 데이터베이스에서 검색됩니다. TaskDetailsModel의 생성자에서 TaskType 속성에 기록됩니다 (이 내용을 원래 게시물로 편집합니다). 선택한 옵션은 클라이언트에 의해 변경 될 수 있습니다. 그런 다음 대화 상자 창이 닫히고 서버로 돌아 가기 전에 선택한 옵션을 살펴 봅니다. 선택한 옵션이 화면에 표시된 옵션과 일치하지 않습니다. –
다시 게시 할 때까지 아무 일도 일어나지 않습니다. 이 때 드롭 다운의 값은 POST 컨트롤러 메소드에서받는 모델 객체에 있어야합니다. –