我的模型中有一個DropDownList控件,TaskDetailsModel。我宣佈我的DropDownList爲:MVC3 Html.DropDownList - 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" };
}
當一切加載和顯示給用戶 - 正確的任務類型選擇完畢。也就是說,使用非默認選擇選項加載時沒有問題。因此,我相信至少部分代碼正常運行。
但是,對選擇所做的任何更改都會丟失。當我嘗試將表單發回服務器時 - 我發現我的選擇選項永遠不會改變。我很想知道我做錯了什麼會導致這種行爲。
更新:
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控制器方法中收到的模型對象中。 –