2011-08-10 11 views
0

私は自分の仕事のためのイベント管理システムに取り組んでいますが、私のオフィスの人々がシステムに新しいイベントをアップロードし、追跡し、編集できるようにするのが基本的な機能です。Viewstateを維持する

これは大部分が完了していますが、今はシステムをクリーンアップしてユーザーフレンドリーにしています。私が抱えている最大の問題の1つはビューの状態を維持することです。私は現在、1つの検索ページを使用してすべてのイベント結果をフィルタリングしています。ユーザーは日付、日付範囲、クライアントなどで検索でき、ユーザーがページ上にとどまる限り、システムは意図したとおりに動作し、彼らはそうでした。

イベントを編集して保存する新しいページ(同じウィンドウ)を開く編集リンクなどの機能があります。これは意図したとおりに動作し、私はqueryStringをページに渡して、システムにどちらを編集するかを伝えます。問題は戻るボタンです。検索ページにリンクしているリンクを使用すると、自分の設定をすべて失ってしまいます。これは、イベントに行った変更を見たい場合には迷惑になります。JavaScriptを使用してビューステートを維持していましたが、ユーザーがリフレッシュするまで編集内容が表示されないように更新されません。

私はこのページに外部リンクを使用していますが、それは契約の破損者ではありませんが、少し厄介ですが、いつか私を悩ませているので、それを理解したいと思います。私はまた、ページの編集を試みたが、それを簡単に把握することができなかったし、これは修正しやすいと考えた。

読んでいただきありがとうございました。誰かがこれを正しい方向に向けることができれば、私はASP.netにかなり新しくなりました。

+0

あなたはので、私はあなたが抱えている問題のより良いアイデアを得ることができますいくつかのサンプルコードを投稿することができます:

は、ここではいくつかのバックボーンルーティングのコードですか? –

+0

それは本当にコードの問題ではありません、私はちょうどセッションのようにしばらく離れていた後にカムバックしたときにページのviewstateを維持する方法があるかどうか疑問に思っていました。 – Gordnfreeman

+0

これはコードと関係があります。私は実際にそれがコードと関係があると思っています。あなたは助けを求めました、そうですか? –

答えて

1

Viewstateは、現在のフォームのコンテキスト内にのみ存在します(非表示の入力フィールドに含まれています)。つまり、Viewstateだけでは助けにならないということです(投稿するのではなく、新しいViewstateになります)。しかし、いくつかのオプションがあります。最も簡単なのは、セッションを使用して検索クエリのコンテキスト(日付、日付範囲、クライアントなど)を保存することです。これはサーバー側に存在し、ページをロードするときに使用できます。検索クエリを管理する別の方法は、ブラウザが履歴をどのように保持するかを利用することです。 URLの最後にハッシュ(#)コードを追加して、javascriptで読むことができます。 Backbone.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; 
} 
+0

情報をありがとう、私はセッションメソッドを使用しようとするつもりです、これは私が現在使っているもののための最も簡単で最良の方法です – Gordnfreeman

関連する問題