2017-06-17 58 views
0

我使用的文本框的MVC hmtl幫助語法,即@Html.TextBoxFor(m => m.Id)。我有相當冗長的形式與多個文本框,單選按鈕和下拉菜單。ASP.NET @ Html.TextBoxFor:如何在用戶頁面刷新的情況下輸入用戶輸入的值?

問題是,當我刷新頁面時,填充在控件中的值即文本框,下拉列表,填充的單選按鈕都會丟失。

即使用戶刷新頁面,我如何避免這種情況並恢復表單的填充值?除localstorage/cookies等之外的其他方法?

+1

是否有一個原因,你不能使用本地存儲或會話存儲,讓您的表單數據? –

+0

只是想探索是否有任何其他方式來解決這個問題。 – maverick

+0

@sahil頁面的狀態必須保存,簡單明瞭 –

回答

0

您可以創建sessionStorage您的jQuery的自定義的方法,你可以把它添加到jquery.fn對象即使刷新頁面

(function($){ 

    // To Load your form values from sessionStorage, and set sessionStorage when value is changed. 

    $.fn.keepValue = function(name) { 
    if(!name) { 
     name= ""; 
    } 
    return this.each(function() { 
     var $this = $(this); 
     var id = $this.attr('id'); 
     var storage_name = namespace + id; 
     var value; 

     // Store form changes in a cookie 
     $this.change(function() { 
     sessionStorage.setItem(storage_name, $this.val()); 
     }); 

     value = sessionStorage.getItem(id); 

     // Don't overwrite value if it's already exist 
     if(!$this.val()) { 
     $this.val(name + value); 
     } 
    }); 
    }; 
})(jQuery); 

$(document).ready(function(){ 
    $('#YourElementId').keepValue(); 
}); 
+0

我相信會話或本地存儲是存儲表單數據的更好選擇。每次發出請求時都會在標頭中發送Cookie,因此應該爲更小的數據集(如令牌)預留Cookie。 –

+0

OP明確指出解決方案不使用cookie或localstorage的要求,儘管可能無法在沒有本地存儲或cookie的情況下保存頁面狀態 –

+0

@Brian也許OP可以使用模型保存表單數據,並且可以返回視圖這個模型在控制器 – hasan

相關問題