2011-08-10 6 views
0

내 업무용 이벤트 관리 시스템에서 작업하고 있는데, 내 업무 담당자가 시스템에 새 이벤트를 업로드하고 추적하고 편집 할 수있게하는 것이 기본 기능입니다.Viewstate 유지 보수

지금은 대부분 시스템을 정리하고 사용자에게 더 친숙하게 접근하고 있습니다. 내가 겪고있는 가장 큰 문제 중 하나는 뷰 상태를 유지하는 것입니다. 현재 모든 이벤트 결과를 필터링하기 위해 하나의 검색 페이지를 사용하고 있습니다. 사용자는 날짜, 날짜 범위, 클라이언트 등으로 검색 할 수 있으며 사용자가 페이지에 머무르는 한 시스템이 의도 한대로 작동하고 모든 검색 기능 설정이 유지됩니다. 그들이 그랬던 것처럼.

이벤트가 편집되고 저장되는 새 페이지 (동일한 창)를 여는 편집 링크와 같은 일부 기능이 있습니다. 이것 역시 의도 한대로 작동하며, queryString을 페이지에 전달하여 편집 할 시스템을 지정합니다. 문제는 뒤로 버튼입니다. 검색 페이지로 연결되는 링크 만 사용하는 경우 모든 설정이 느슨합니다. 이벤트에 방금 변경 한 사항을보고 싶다면 다소 성가신 일입니다. JavaScript를 사용하여 viewstate는 유지하지만 페이지는 유지하려고했습니다. 새로 고침하지 않아 사용자가 새로 고침 할 때까지 수정 사항이 표시되지 않습니다.

나는이 페이지에서 외부 링크를 사용하며, 거래 차단기가 아니고 약간 성가신이지만 언젠가는 나를 괴롭히는 것으로 파악하고 싶습니다. 또한 페이지에서 편집 작업을 시도했지만 쉽게 이해할 수 없었으며 수정하기가 더 쉽다고 생각했습니다.

읽어 주셔서 감사합니다. 누군가가 이것을 올바른 방향으로 지적 할 수 있기를 바랍니다. 저는 ASP.net과 새로운 정보가 도움이 될 것입니다.

+0

당신은 그래서 당신이 발생하는 문제의 더 나은 아이디어를 얻을 수있는 몇 가지 예제 코드를 게시 할 수 :

는 여기에 몇 가지 백본 라우팅 코드입니까? –

+0

정말 코드 문제가 아닙니다. 세션에서와 같이 잠시 떨어져있는 상태로 복귀했을 때 페이지의 viewstate를 유지할 수있는 방법이 있는지 궁금합니다. – Gordnfreeman

+0

코드와 관련이있을 수 있습니다. 실제로 코드와 관련이 있다고 생각합니다. 도움을 청 했잖아, 그렇지? –

답변

1

Viewstate는 현재 양식의 컨텍스트 내에 만 존재합니다 (숨겨진 입력 필드에 포함되어 있음). 즉, Viewstate만으로는 도움이되지 않습니다 (게시하지 않고 언제든지 새로운 Viewstate를 갖게됩니다). 그러나 몇 가지 옵션이 있습니다. 가장 쉬운 방법은 세션을 사용하여 검색어 (날짜, 날짜 범위, 클라이언트 등)의 컨텍스트를 저장하는 것입니다. 이것은 서버 측에 존재하며 페이지를로드 할 때 사용할 수 있습니다. 검색 쿼리를 유지 관리하는 또 다른 방법은 브라우저에서 기록을 유지하는 방법을 이용하는 것입니다. 당신은 해시 (#) 코드를 자바 스크립트가 읽을 수있는 URL 끝에 추가 할 수 있습니다. Backbone.js 라우팅 및 기록 기능은 이러한 방식으로 작동합니다. 그러나 이는 비동기식 요청에 일반적으로 사용되는 매우 복잡한 솔루션입니다. 이 두 가지 가능한 옵션에는 몇 가지주의 사항 (세션 쿠키의 수명 동안 세션 수명)이 있지만 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; 
} 
+0

정보를 주셔서 감사합니다. 세션 메서드를 사용하려고합니다. 현재이 인터페이스를 사용하고있는 가장 쉬운 방법 인 것처럼 보입니다. – Gordnfreeman

관련 문제