2017-02-09 12 views
0

コンテキストのために、私は予約Webサイトを開発しています。機能の1つは、ログインしたユーザーが過去の予約を見ることができることです。このために、私はTableAdapterの助けを借りてDataListを設定しています。これを実現するためにASP.NETとC# - Guidをパラメータとしてクエリを実行すると例外がスローされます

、私はそうすることによって、ユーザのIDをつかんだ:

var currentUser = Membership.GetUser(User.Identity.Name); Guid userID = (Guid)currentUser.ProviderUserKey;

そして、クエリへのGuidことを渡す:

viagem = new viagemTableAdapter(); 
viagem.GetDataByCliente(userID); 

がここにありますデータセット:

GetDataByClienteのクエリは次のとおりです。

SELECT  id, destino, nrAdultos, nrCriancas, checkin, checkout, hotel, extra_transpHotel, extra_transpAerop, extra_almoco, extra_jantar, extra_espetaculo, preco 
FROM   viagem 
WHERE  (idCliente = @idCliente) 

簡単にStringにProviderUserKeyを変換しようとしましたが、idClienteがテーブルのUniqueIdentifierであるため、クエリに渡すことができません。

理論上、これは機能しているはずです。問題は、私がページにアクセスしようと毎回ある、この例外がスローされます。

enter image description here

私はどんな、それを説明することはできません。私が間違っていることに誰かが光を当てることはできますか?

+1

あなたは私たちに 'GetDataByCliente'メソッドのコードを表示することができますか? – Hackerman

+0

申し訳ありませんが、GetDataByClienteコードがクエリそのものであるはずです。それはデータセットメソッドです –

+1

ええ、しかしメソッド実装のコードはどこですか? – Hackerman

答えて

0

あなたは文字列としてGUIDを取得するには、このような何かを試してみてください、そして方法への文字列のparamとして渡すよりもできます:

string userID= Membership.GetUser(User.Identity.Name).ProviderUserKey.ToString(); 

//For currently logged in user you could use without passing the User.Identity.Name; 

string userID= Membership.GetUser().ProviderUserKey.ToString(); 

viagem = new viagemTableAdapter(); 
viagem.GetDataByCliente(userID); 
関連する問題