我使用的文本框的MVC hmtl帮助语法,即@Html.TextBoxFor(m => m.Id)
。我有相当冗长的形式与多个文本框,单选按钮和下拉菜单。ASP.NET @ Html.TextBoxFor:如何在用户页面刷新的情况下输入用户输入的值?
问题是,当我刷新页面时,填充在控件中的值即文本框,下拉列表,填充的单选按钮都会丢失。
即使用户刷新页面,我如何避免这种情况并恢复表单的填充值?除localstorage/cookies等之外的其他方法?
我使用的文本框的MVC hmtl帮助语法,即@Html.TextBoxFor(m => m.Id)
。我有相当冗长的形式与多个文本框,单选按钮和下拉菜单。ASP.NET @ Html.TextBoxFor:如何在用户页面刷新的情况下输入用户输入的值?
问题是,当我刷新页面时,填充在控件中的值即文本框,下拉列表,填充的单选按钮都会丢失。
即使用户刷新页面,我如何避免这种情况并恢复表单的填充值?除localstorage/cookies等之外的其他方法?
您可以创建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();
});
我相信会话或本地存储是存储表单数据的更好选择。每次发出请求时都会在标头中发送Cookie,因此应该为更小的数据集(如令牌)预留Cookie。 –
OP明确指出解决方案不使用cookie或localstorage的要求,尽管可能无法在没有本地存储或cookie的情况下保存页面状态 –
@Brian也许OP可以使用模型保存表单数据,并且可以返回视图这个模型在控制器 – hasan
是否有一个原因,你不能使用本地存储或会话存储,让您的表单数据? –
只是想探索是否有任何其他方式来解决这个问题。 – maverick
@sahil页面的状态必须保存,简单明了 –