Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 维护视图状态_Asp.net_Viewstate - Fatal编程技术网

Asp.net 维护视图状态

Asp.net 维护视图状态,asp.net,viewstate,Asp.net,Viewstate,我正在为我的工作开发一个事件管理系统,它的基本功能是允许我办公室的人员将新事件上传到系统,跟踪并编辑它们 它在很大程度上是完整的,现在我正在清理系统,使其更加用户友好。我遇到的最大问题之一是维护视图状态。我目前使用一个搜索页面来过滤我的所有事件结果,用户可以按日期、日期范围、客户端等进行搜索,只要用户停留在页面上,系统就会按预期工作,所有搜索功能设置都会保持原样 有一些功能,如编辑链接,可以打开一个新页面(同一窗口),在该页面上编辑和保存事件。这也可以按预期工作,我向页面传递一个查询字符串,告诉

我正在为我的工作开发一个事件管理系统,它的基本功能是允许我办公室的人员将新事件上传到系统,跟踪并编辑它们

它在很大程度上是完整的,现在我正在清理系统,使其更加用户友好。我遇到的最大问题之一是维护视图状态。我目前使用一个搜索页面来过滤我的所有事件结果,用户可以按日期、日期范围、客户端等进行搜索,只要用户停留在页面上,系统就会按预期工作,所有搜索功能设置都会保持原样

有一些功能,如编辑链接,可以打开一个新页面(同一窗口),在该页面上编辑和保存事件。这也可以按预期工作,我向页面传递一个查询字符串,告诉系统要编辑哪个。问题是后退按钮。如果我使用了一个只链接到搜索页面的链接,我会丢失所有设置。如果你想看到你刚刚对事件所做的更改,这有点烦人。我尝试了一个JavaScript,它可以维护你的viewstate,但页面不会刷新,因此任何编辑都不会显示,直到用户刷新

我在这个页面上使用了三次外部链接,虽然它不是一个交易破坏者,只是有点烦人,但我想弄清楚,因为它已经困扰了我一段时间了。我也尝试过在页面中进行编辑,但无法更容易地解决这个问题,我认为这将更容易修复


感谢您的阅读,希望有人能给我指出正确的方向,我是ASP.net的新手,我相信任何信息都是有用的

Viewstate仅存在于当前表单的上下文中(它包含在隐藏的输入字段中)。这意味着Viewstate本身不会有任何帮助(无论何时您获得页面,而不是post,它都会有一个新的Viewstate)。不过有几个选择。最简单的方法是使用会话存储搜索查询的上下文(日期、日期范围、客户端等)。这存在于服务器端,可以在加载页面时使用。维护搜索查询的另一种方法是利用浏览器维护历史记录的方式。您可以将散列(#)代码添加到url的末尾,然后javascript可以读取该代码。js路由和历史功能就是这样工作的。然而,这是一个非常复杂的解决方案,因为它通常用于异步请求。这两个可能的选项都有一些警告(会话cookie生命周期中的会话寿命),但如果删除Viewstate(Page.EnableViewState=false),则请求/响应网络占用空间将小得多

以下是一些主干路由代码:

$(document).ready(function() {
    Backbone.history.start();
});

// create some routes
var DynamicWorkspace = Backbone.Router.extend({
        routes: {
            "search/:date": "search",
            "search/:date/:range": "search",
            "search/:date/:range/:client": "search"
        },

        search: function(date, range, client) {
            // make a request to your server with the queries
        }
    });

var dynamicRouter = new DynamicWorkspace;

var currentDate = '';
var currentRange = '';
var currentClient = '';

// call this via javascript from a page element
function setDate(value) {
    currentDate = value;
    return updateNavigation();
}

// call this via javascript from a page element
function setDateRange(value) {
    currentRange = value;
    return updateNavigation();
}

// call this via javascript from a page element
function setClient(value) {
    currentClient = value;
    return updateNavigation();
}

function updateNavigation() {
    // change the browser url to our known route
    dynamicRouter.navigate('search/' + currentDate + '/' + currentRange + '/' + currentClient, true);
    return false;
}

你能发布一些示例代码让我更好地了解你遇到的问题吗?这其实不是一个代码问题,我只是想知道在你离开一段时间后(比如在一个会话中)返回页面时,是否有办法维护页面的viewstate。这可能与代码有很大关系。我实际上认为它与代码有关。您要求帮助,对吗?谢谢您提供的信息,我将尝试使用session方法,因为这似乎是我目前使用它的最简单和最好的方法