MVC3 Html.DropDownList - DropDownList的值永远不会改变

时间:2012-10-11 23:16:47

标签: c# asp.net-mvc asp.net-mvc-3

我的模型中有一个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);
};

2 个答案:

答案 0 :(得分:0)

要使用jquery获取所选的下拉值,您应该使用

$('#dropdownid').val();

答案 1 :(得分:0)

问题实际上是因为我以明显不正当的方式重命名我的枚举值。传递回服务器时唯一丢失的值是选择,其中包含空格。 (例如,改为'退役'是好的,但改为'等待客户'无法正确翻译。)