我想向GridView
我的一个视图添加一个由SqlDataSource
. 该SelectCommand
查询aspnet_Users.UserId
在当前登录用户的 GUID 上进行了参数化,因此我需要一种将用户 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.config 文件丢失,则可能会发生这种情况。”
我需要以Web.config
某种方式进行修改吗?如果没有,我需要做什么才能使用我的自定义UserIdParameter
参数?