C# ASP.NET成员资格-需要将自定义字段添加到管理屏幕
我需要添加一个与登录名关联的公司名称字段。稍后,我需要将其合并到我现有的管理屏幕中以进行报告 我就是不知道该怎么做。我尝试过向成员资格表中添加列并修改存储的进程,但该列不会显示 这是我需要修改的管理页面代码C# ASP.NET成员资格-需要将自定义字段添加到管理屏幕,c#,asp.net,asp.net-membership,membership,membership-provider,C#,Asp.net,Asp.net Membership,Membership,Membership Provider,我需要添加一个与登录名关联的公司名称字段。稍后,我需要将其合并到我现有的管理屏幕中以进行报告 我就是不知道该怎么做。我尝试过向成员资格表中添加列并修改存储的进程,但该列不会显示 这是我需要修改的管理页面代码 <%@ Page Language="C#" MasterPageFile="~/admin.master" %> <%@ Register TagPrefix="dc" TagName="alphalinks" Src="~/alphalinks.ascx" %>
<%@ Page Language="C#" MasterPageFile="~/admin.master" %>
<%@ Register TagPrefix="dc" TagName="alphalinks" Src="~/alphalinks.ascx" %>
<script runat="server">
private void Page_PreRender()
{
if (Alphalinks.Letter == "All")
{
Users.DataSource = Membership.GetAllUsers();
}
else
{
Users.DataSource = Membership.FindUsersByName(Alphalinks.Letter + "%");
}
Users.DataBind();
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="c" Runat="Server">
<!-- #include file="_nav.aspx -->
<table class="webparts">
<tr>
<th>Users by Name</th>
</tr>
<tr>
<td class="details" valign="top">
<!-- #include file="_nav3.aspx -->
User Name filter:
<dc:alphalinks runat="server" ID="Alphalinks" />
<br />
<br />
<asp:GridView runat="server" ID="Users" AutoGenerateColumns="false"
CssClass="list" AlternatingRowStyle-CssClass="odd" GridLines="none"
>
<Columns>
<asp:TemplateField>
<HeaderTemplate>User Name</HeaderTemplate>
<ItemTemplate>
<a href="edit_user.aspx?username=<%# Eval("UserName") %>"><%# Eval("UserName") %></a>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="email" HeaderText="Email" />
<asp:BoundField DataField="comment" HeaderText="Comments" />
<asp:BoundField DataField="creationdate" HeaderText="Creation Date" />
<asp:BoundField DataField="lastlogindate" HeaderText="Last Login Date" />
<asp:BoundField DataField="lastactivitydate" HeaderText="Last Activity Date" />
<asp:BoundField DataField="isapproved" HeaderText="Is Active" />
<asp:BoundField DataField="isonline" HeaderText="Is Online" />
<asp:BoundField DataField="islockedout" HeaderText="Is Locked Out" />
</Columns>
</asp:GridView>
</td>
</tr></table>
</asp:Content>
私有无效页_PreRender()
{
如果(Alphalinks.Letter==“全部”)
{
Users.DataSource=Membership.GetAllUsers();
}
其他的
{
Users.DataSource=Membership.FindUsersByName(Alphalinks.Letter+“%”);
}
Users.DataBind();
}
谢谢你在这方面的帮助
谢谢,
Steve编辑:不要修改存储的过程或使用成员资格提供程序创建的表。这是自找麻烦。您需要做的是添加一个概要文件提供程序,它扩展了标准用户信息 原始答复: 请阅读Scott Guthrie的这篇文章: 它是关于表配置文件提供程序的,它比开箱即用的提供程序要好得多
这一条也是:Steve,您是否从custom
MembershipProvider
返回一个定制的成员身份用户
,该用户是您用适当的值构建的,要执行此操作,需要实现该用户
如果没有,那么
如果是这样,您将需要强制转换成员资格的结果,因为它的返回类型是股票成员资格用户,即使您返回的是派生类型
类似于
Users.DataSource = Membership.GetAllUsers().Cast<MyMembershipUser>();
Users.DataSource=Membership.GetAllUsers().Cast();
丹尼尔,我知道你的意图,但你绝不会以国家的名义来解决这个问题。抱歉--1.问题是他们想将公司名称与用户的登录名相关联。如果您已经在使用成员资格提供程序,则ProfileProvider是标准的asp.net方法。它们是齐头并进的。你可以随心所欲地打蜡修正主义者,丹尼尔,这并不能改变你最初的答案是不符合逻辑的事实。您后来添加的建议是有效的,但不要假装您给出了一个连贯的答案。如果您认为在任何情况下,将自定义字段添加到成员身份而不是配置文件都是没有意义的,那么您就错了。如果你要向提问者指出与他们明确要求相反的方向,你应该提供的不仅仅是“不要那样做”,这是很公平的。我不太懂你的英语,但我已经更新了我的帖子,以反映我对原文的修改。这样可以吗?似乎我必须重写我的大部分页面才能添加一个字段?这看起来真的很糟糕。没有比这更简单的方法了?谢谢你的帮助,我只是有点沮丧,因为我想更好地理解这一点。@steve-好吧,daniel建议使用配置文件,我在某些情况下同意,这取决于额外数据的随意性和敏感性。如果您描述了要与用户关联的字段类型,以及为什么在第一种情况下选择“成员资格”而不是“个人资料”,这将有助于澄清问题。我只需要一个或两个字段。1是客户名称,另一个是表示密码有效天数的值。我选择会员资格是因为我开始用这种方式编码。没有其他原因,因为我对这一切都很陌生。@steve-嗯,客户名称是配置文件的候选名称,但与密码相关的任何内容都不是,应该与密码一起存储,作为会员数据。所以你也可以把另一个领域也包括进去,因为这会减少工作量。@steve-准备好进行另一次冒险,并按照我答案()中的链接进行操作。