雖然這個問題開始與MVC4,我發現導致了更加通用的,適用於jQuery和答案可以在一般化妝下拉只讀
用於如何使一個下拉只讀尚未數據(更改值限制)可以在控制器上提交嗎?
當我在編輯模式下顯示for時,我想根據某些條件禁用特定的下拉菜單。但是在提交時,我需要控制器中的數據,以便我可以直接使用對象來使用EF進行更新。
如果我使用禁用的屬性,數據將不可用於控制器,我需要編寫很多其他代碼來獲取屬性或更新時跳過屬性。
是否有快速解決方法,可以輕鬆應用於所有屏幕?
不,我不想禁用它,並啓用提交!
雖然這個問題開始與MVC4,我發現導致了更加通用的,適用於jQuery和答案可以在一般化妝下拉只讀
用於如何使一個下拉只讀尚未數據(更改值限制)可以在控制器上提交嗎?
當我在編輯模式下顯示for時,我想根據某些條件禁用特定的下拉菜單。但是在提交時,我需要控制器中的數據,以便我可以直接使用對象來使用EF進行更新。
如果我使用禁用的屬性,數據將不可用於控制器,我需要編寫很多其他代碼來獲取屬性或更新時跳過屬性。
是否有快速解決方法,可以輕鬆應用於所有屏幕?
不,我不想禁用它,並啓用提交!
試圖很少通用(不只是MVC.NET)
$.fn.extend({
readonlyddl: function() {
if (this.is('[readonly]')) {
// save current value
var val = this.val();
// remove any events that fire on change
this.unbind("change");
//reset the value when the select change
this.change(function() {
$(this).val(val);
});
}
}
});
// $("#ID").readonlyddl();
我不確定它是否是最佳解決方案,聽起來像解決方法,但您可以將隱藏的輸入添加到您的表單中,其值等於從下拉列表中選定的項目(已禁用)。下拉菜單將被禁用,當提交表單時,您可以在控制器中獲得隱藏輸入的值。
這很棘手......我需要在每個頁面添加大量的代碼。也有時它需要啓用,所以可能不適合我的情況。無論如何感謝您的想法。 – 2014-08-28 08:08:59
的代碼就顯示什麼@ntl還回答了在MVC爲殘疾下拉列表中選擇解決方法:
型號:
Public int FooId {get;set;}
控制器:
@Html.DropDownListFor(x => x.FooId, Model.Foos, new { disabled = "disabled" })
@Html.HiddenFor(x => x.FooId)
如果必須禁用使用javascript動態下拉菜單,然後只需將當前選定的下拉列表的值分配給隱藏字段禁用它。
現在隱藏字段'FooId'
會爲您提供在控制器後操作中選定的下拉值。
我會建議不要依賴未更改的數據。數據在發送到瀏覽器並返回到服務器後不再可靠。它可以很容易地改變。
尤其是當您直接更新數據庫時。
同意,但在我的情況下,會有客戶端操作,有時我需要禁用更改(與只讀文本框相同) – 2014-08-31 06:04:28
我不是很familliar你的應用程序,但我假設只讀下拉意味着你已經在你的代碼或分貝的地方,對嗎?那麼爲什麼你不得不依靠它被客戶提交呢? – parchment 2014-08-28 08:09:24