2011-04-07 53 views
1

我看到有關於此主題的類似帖子,但沒有回答我的問題。我正在導航到silverlight頁面,我需要將值傳遞給頁面。出於安全原因,我不能使用查詢字符串。Silverlight查詢字符串替代

有什麼替代方案?當您導航到新頁面

感謝

+1

爲什麼這被認爲是不安全的?你能加密querstring的值,然後在頁面上解密它們嗎?請詳細說明。 – 2011-04-07 19:53:29

+1

從另一個Silverlight頁面或HTML頁面到Silverlight頁面? – 2011-04-07 20:26:56

+0

它不安全,因爲我傳遞一個ID值:如果我將它傳遞給查詢字符串,它可以由用戶更改並使用它導航到其他數據。該值源於我的視圖模型,然後將其視爲Silverlight頁面。 – Greg 2011-04-08 10:01:27

回答

1

你c只需將其添加到可在視圖之間共享的應用程序上下文對象。我在當前的項目中使用這種方法,例如所以

CurrentUserContext = ApplicationContext.Instance().UserContext 

,可從一個視圖導航到另一個之前簡單地填充在可以隨後通過其他視圖中檢索ApplicationContext的對象相關共享屬性:

public class ApplicationContext 
    { 

     #region Declarations 

     // Static instance of the application class. 
     private static ApplicationContext _instance; 

     #endregion 

     #region Constructor 

     public ApplicationContext() 
     { 
     } 

     // Static instance creator. 
     public static ApplicationContext Instance() 
     { 
      if (_instance == null) 
      { 
       _instance = new ApplicationContext(); 
      } 
      return _instance; 
     } 

     //Shared properties e.g. Is available between all views 
     public SecurityContext UserContext { get; set; } 
    } 

若要從視圖中使用。

+0

太好了 - 那正是我在找的東西。謝謝Myles J – Greg 2011-04-22 18:10:10

0

你可以存儲在Web服務器上的值(通過您的RIA的數據模型,或交在你喜歡的任何方式),然後請求值。

+0

我不能這樣做,因爲它的用戶在前一頁選擇的值 – Greg 2011-04-08 10:03:38

+0

當然可以。您可以在UI中選擇它時發佈該值(如果有幫助,請考慮使用AJAX)。 – 2011-04-08 17:38:56

+0

我的印象是,傳遞值可以全部在客戶端完成,而無需返回服務器? – Greg 2011-04-10 12:55:21

1

你可以使用InitParams。 ////在ASPX設置 「/>

私人無效Application_Startup(對象發件人,StartupEventArgs E) { 變種COLL = e.InitParams; }

+0

我不能使用InitParams,因爲值根據用戶選擇而改變 – Greg 2011-04-08 10:02:51

0

如果它的之間silverlight的意見,那麼你可以有一些靜態數據包來傳遞數據。This post關於如何在Silverlight中進行HTTP Post也可能對你有所幫助。

+0

我嘗試過使用NavigationFramework來隱藏URL,但我在XAML中收到錯誤:錯誤說明了? char無效? – Greg 2011-04-08 10:04:51

+0

Greg 2011-04-08 10:05:50

+0

使用*雙引號* **「**,而不是單引號**'。**。 – AbdouMoumen 2011-04-10 10:00:41