GridView
によってサポートされているビューの 1 つにコントロールを追加したいと考えていますSqlDataSource
。SelectCommand
クエリは、現在ログインしているユーザーの GUID でパラメーター化されているためaspnet_Users.UserId
、ユーザー ID をパラメーターとして渡す方法が必要です。
コード ビハインドなしで SqlParameter で ASP.NET の現在のユーザー名を利用する方法を読み、次のParameter
名前のカスタムを作成することにしましたUserIdParameter
。
namespace MyApp.Web
{
public class UserIdParameter : Parameter
{
public UserIdParameter(string name)
: base(name)
{
}
protected UserIdParameter(UserIdParameter parameter)
: base(parameter)
{
}
protected override Parameter Clone()
{
return new UserIdParameter(this);
}
protected override object Evaluate(HttpContext context, Control control)
{
return Membership.GetUser().ProviderUserKey;
}
}
}
ASPX ビューで、次のように追加しました。
<%@ Register TagPrefix="my" Namespace="MyApp.Web" %>
行の次の<%@ Page ... %>
行と同様に:
<SelectParameters>
<my:UserIdParameter Name="UserId" />
</SelectParameters>
要素内asp:SqlDataSource
。
残念ながら、パーサー エラー (「このリクエストを処理するために必要なリソースの解析中にエラーが発生しました。次の特定の解析エラーの詳細を確認し、ソース ファイルを適切に変更してください。」) が表示され、次の部分が赤色で強調表示されます。
<my:UserIdParameter Name="UserId" />
Visual Web Developer 2010 Express からも、「要素 'UserIdParameter' は既知の要素ではありません。これは、Web サイトにコンパイル エラーがあるか、web.config ファイルが見つからない場合に発生する可能性があります。」と通知されます。
Web.config
何らかの方法で変更する必要がありますか? UserIdParameter
そうでない場合、カスタムパラメータを使用するにはどうすればよいですか?