我的模型中有一个DropDownList控件,TaskDetailsModel。我已将我的DropDownList声明为:
<%= Html.DropDownListFor(model => model.TaskType, new SelectList(Model.TaskTypeDisplayNames, Model.TaskTypes))%>
我的模型的相应类包含以下属性声明:
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 :(得分:0)
要使用jquery获取所选的下拉值,您应该使用
$('#dropdownid').val();
答案 1 :(得分:0)
问题实际上是因为我以明显不正当的方式重命名我的枚举值。传递回服务器时唯一丢失的值是选择,其中包含空格。 (例如,改为'退役'是好的,但改为'等待客户'无法正确翻译。)