Я хочу добавить GridView
элемент управления к одному из моих видов, который поддерживается SqlDataSource
. Запрос SelectCommand
параметризован по GUID aspnet_Users.UserId
для текущего пользователя, вошедшего в систему, поэтому мне нужен способ передать идентификатор пользователя в качестве параметра.
Я прочитал Как использовать текущее имя пользователя ASP.NET в SqlParameter без кода и решил создать пользовательский 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
?