1

我已使用 asp 会员功能将用户管理添加到我的 Web 应用程序。我已修改默认表以包含更多字段。在创建用户向导中,我将向导的第一步变成了可自定义的模板,并添加了 2 个字段的控件。

我知道只修改用于存储用户记录的存储过程吗?我将如何为此添加下拉列表?

USE [DataWarehouseClients]
GO
/****** Object:  StoredProcedure [dbo].[aspnet_Users_CreateUser]    Script Date:     04/09/2010 12:03:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO

ALTER PROCEDURE [dbo].[aspnet_Users_CreateUser]
   @ApplicationId    uniqueidentifier,
   @UserName         nvarchar(256),
   @IsUserAnonymous  bit,
   @LastActivityDate DATETIME,
   @UserId           uniqueidentifier OUTPUT
AS
BEGIN
   IF( @UserId IS NULL )
       SELECT @UserId = NEWID()
   ELSE
BEGIN
    IF( EXISTS( SELECT UserId FROM dbo.aspnet_Users
                WHERE @UserId = UserId ) )
        RETURN -1
END

INSERT dbo.aspnet_Users (ApplicationId, UserId, UserName, LoweredUserName, IsAnonymous, LastActivityDate)
VALUES (@ApplicationId, @UserId, @UserName, LOWER(@UserName), @IsUserAnonymous, @LastActivityDate)

RETURN 0

结尾

干杯——比利

4

2 回答 2

1

如果您按照@edosoft 的建议使用 ASP.Net 会员 api,那么您不需要手动更新存储的过程。

如果要向用户配置文件添加新/自定义字段,则可以在与配置文件关联的 web.config 文件中添加一个键。然后可以从单独的例程中的静态下拉列表中从刚刚使用的数据库表中单独选择该字段的值,例如。

在您的 web.config 文件中:

    <profile enabled="true" defaultProvider="providername" automaticSaveEnabled="true">
        <providers>
          <add name="providername" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ConnectionString" applicationName="AppName"/>
        </providers>
        <properties>
          <add name="UserFirst"/>
          <add name="UserLast"/>
        </properties>
    </profile>

然后你可以像这样使用它,其中 User_ID 是一个字符串标识符。

        Membership.CreateUser(User_ID, "password", "email@example.com")        
        Dim objProfile As ProfileCommon = CType(ProfileBase.Create(User_ID, True), ProfileCommon)
        objProfile.UserFirst = User_First
        objProfile.UserLast = User_Last
        objProfile.Save()

希望这可以帮助。

于 2010-04-09T11:25:49.780 回答
0

aspnet_Users_CreateUser据我所知,ASP.NET 会员 API 使用存储过程

于 2010-04-09T10:47:42.267 回答