2017-06-17 22 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

相关问题