asp.net / sql user.identity.name

时间:2011-12-09 21:20:37

标签: asp.net sql vb.net visual-studio-2010

我正在尝试在ASP.NET中获取详细信息视图,以仅显示已登录用户的详细信息。我被告知要使用:

select * from STAFF where USERNAME = user.identity.name

我认为这太简单了,而且我是正确的,因为它在我试图运行时没有显示任何数据。对此有任何帮助..

1 个答案:

答案 0 :(得分:0)

我最近才尝试做同样的事情。对于我想要做的事情来说太令人头疼了所以我最终从头开始构建表单。如果要使用详细信息视图,可以调用

aspnet_Membership_GetUserByName或 aspnet_Membership_GetUserByEmail或 aspnet_Membership_GetUserByUserId

并使用结果填充DataTable或DataSet,并将DataBind填充到DetailsView。但是,如果您可以避免使用DetailsView,我会推荐它,因为您正在规避会员提供商,这完全违背了首先使用它的目的。

尝试通过创建SqlMembershipProvide扩展CustomMembershipProvider r并覆盖并重载GetUser()方法,以返回可轻松绑定到详细信息视图的DataTable

它看起来像这样>

using System.Web.Security;
using System.Data;

namespace yourNameSpace
{

    public class CustomSqlMembershipProvider : SqlMembershipProvider
    {


        public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
        {
            return base.GetUser(providerUserKey, userIsOnline);
        }

        public DataTable GetUser(string UserName)
        {
            MembershipUser user = base.GetUser(username, false);

            //code to create a datatable and populate it with user properties.
            DataTable dt = new DataTable();

            //Add columns
            DataColumn column = new DataColumn();

            //add columns to table

            return dt;
        }
    }
}

确保在完成后在web.config中引用新的成员资格提供程序。

帮助这给你一些指导。它需要一些工作,但最终它更容易维护,然后排除任何成员规避代码。