私は、ユーザーの一覧を表示するページを持っています。各ユーザーにはIDとHyperlinkButtonがあり、ユーザーの詳細を表示します。SilverlightがHyperlinkButtonを使用するページ間のパラメータを渡す
ハイパーリンクボタンを押すと、別のページ(UserDetailsという名前)に移動して、押されたユーザーのIDを何とか読んでいます。
どうすればいいですか?
おかげで、 ロニー
私は、ユーザーの一覧を表示するページを持っています。各ユーザーにはIDとHyperlinkButtonがあり、ユーザーの詳細を表示します。SilverlightがHyperlinkButtonを使用するページ間のパラメータを渡す
ハイパーリンクボタンを押すと、別のページ(UserDetailsという名前)に移動して、押されたユーザーのIDを何とか読んでいます。
どうすればいいですか?
おかげで、 ロニー
私は素晴らしい解決策を見つけましたが、よりエレガントなものを聞きたいと思います。 UriMapperセクション内
は、私は別のUriMapping追加しました:そうすることによって
<uriMapper:UriMapping Uri="/UserDetails/{UserId}" MappedUri=/Views/UserDetails.xaml"/>
を、「/ UserDetailsの形式で、すべてのナビゲーション/ XXXは同じページ、UserDetails.xamlにナビゲートされる
。だから今、私のHyperlinkButtonが必要な形式でNavigateUriで生成されます。上の今
NavigateUri = "/ UserDetails/1234"
、 UserDetails.xamlページのOnNavigatedToメソッドでは、Uriパラメータ(e.Uri)を解析し、それに応じてUserの詳細を読み込むことができます。
何についてはそうのようなクエリ文字列にID
を置きます。
<HyperlinkButton
x:Name="btn" /**other properties**/
NavigateUri="http://www.yoururl.com/details.aspx?ID=1234">
</HyperlinkButton>
Details.aspx
にあなたはSilverlightのオブジェクト
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="initParams" value='<%= GetID() %>' />
</object>
Details.aspx.cs
で、Details.aspx
の背後にあるコードのinitParams
プロパティにIDを置くことができ、あなたはあなたに、そのように
public string GetID(){
return string.Format("ID={0}", Request.QueryString[0]);
}
ようinitParamsを埋めますSilverlightアプリケーションの起動時にIDを読み取ることができます
private void Application_Startup(object sender, StartupEventArgs e)
{
int ID = Convert.ToInt32(e.InitParams["ID"]);
}
おかげのように。 しかし、同じaspxファイルにとどまることは可能ですか? "NavigateUri ="/UserDetails "+ IDのような相対パスを使用する – Ronny
もちろん、ナビゲートせずにデータを渡すことができるのであれば、同じページにナビゲートして渡す必要があるのはなぜですか? –
2つのページの間を移動する必要があります。最初のページはページで、ユーザーのリスト(UsersList.xaml)を表示し、2番目のページは特定のユーザーの詳細(UserDetails.xaml)を示します。 私は素敵な解決策を見つけましたが、より洗練された解決策をお聞きしたいです – Ronny
あなたは、クエリ文字列からデータを取得するためにNavigationContextを使用することができます。これを試してみてください:ナビゲートページの何かで
<HyperlinkButton NavigateUri="/UserDetails?userId=123" />
とよりをお使いの再生のため、この
string customerId = this.NavigationContext.QueryString["customerid"];
Uriを解析する必要はありません。MappedUriを "/Views/UserDetails.aspx?id={UserId}"に変更してください。 NavigationContextを使用できるようになります。値を取得するためのQueryString ["id"] – TimothyP