2013-08-21 49 views
0

我正在一個網站上,有幾種情況下,一些輸入數據應該是可見的,但禁用用戶輸入。由於被禁用的輸入數據沒有被髮送回服務器,我總是添加一個隱藏的輸入來發送回服務器。這樣數據不會被空值覆蓋。發送禁用列表框數據到服務器

現在我在呈現禁用的ListBox時出現問題。目前,我呈現該列表框的副本,對用戶隱藏。有沒有更好的方法來獲得相同的結果?

代碼來說明:

@*Works fine*@ 
@if (Model.OnEdit) 
{ 
    @Html.HiddenFor(x => x.Contract) 
    @Html.DropDownListFor(x => x.Contract, 
         Model.ContractList, 
         new { disabled = "disabled" }) 
} 

@if (Model.OnEdit) 
{ 
    @*Otherwise the items will be updated to null*@ 
    @Html.ListBoxFor(x => x.Items, 
        Model.ItemList, 
        new { @class = "hidden" }) 
    @Html.ListBoxFor(x => x.Items, 
        Model.ItemList, 
        new { disabled = "disabled" }) 
} 

回答

0

小靠邊:

這不是輸入的共同使用的情況下,becouse禁用輸入被當作它們不是由用戶改變,所以通常所不想將他們的數據發送到服務器。

所以首先你應該仔細考慮「爲什麼你的不同?」和「應該有所不同?」。 如果數據與以前相同,那麼爲什麼我們需要它?

答:

有沒有更好的辦法,而不使用JavaScript發送這個數據。

如果你有一個複雜的客戶端行爲動態表單然後我會使用JavaScript,並收集殘疾人輸入數據:

var listData = $('#ContractList').find(":selected").val(); 
var data = $('#form').serialize(); 
data.ContractList = listData; 
$.post('ajax/test.html', data, function(result) { 
    $('.result').html(result); 
});