Ein Feld oder Eigenschaft mit dem Namen 'Benutzer' wurde nicht gefunden auf der ausgewählten Datenquelle
Ich bin mit einer SqlDataSource zu binden Detailansicht für userprofile, die ermöglicht Benutzern das anzeigen Ihrer Informationen und zur gleichen Zeit, ändern Sie Ihre Angaben. (auswählen, abrufen und aktualisieren)
jedoch dieser Fehler aufgetreten ist-- Ein Feld oder Eigenschaft mit dem Namen 'Benutzer' wurde nicht gefunden auf der ausgewählten Datenquelle, wenn ich auf den hyperlink, um direkt zu den "userprofile" - Seite.
Exception Details: System.Web.HttpException: A field or property with the name 'Username' was not found on the selected data source.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
dies ist der code im userprofile.aspx-Datei:
<asp:DetailsView ID="UserProfile" runat="server"
AutoGenerateRows="False" DataKeyNames="UserId"
DataSourceID="UserProfileDataSource" DefaultMode="Edit"
onitemupdated="UserProfile_ItemUpdated">
<Fields>
<asp:BoundField DataField="Username" HeaderText="Username"
SortExpression="Username" />
<asp:BoundField DataField="HomeTown" HeaderText="HomeTown"
SortExpression="HomeTown" />
<asp:BoundField DataField="HomepageUrl" HeaderText="HomepageUrl"
SortExpression="HomepageUrl" />
<asp:BoundField DataField="Signature" HeaderText="Signature"
SortExpression="Signature" />
<asp:CommandField ShowEditButton="True" />
</Fields>
</asp:DetailsView>
<asp:SqlDataSource ID="UserProfileDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:SecurityTutorialsConnectionString %>"
SelectCommand="SELECT * FROM [UserProfiles] WHERE ([UserId] = @UserId)"
onselecting="UserProfileDataSource_Selecting"
UpdateCommand="UPDATE UserProfiles SET
Username = @Username,
HomeTown = @HomeTown,
HomepageUrl = @HomepageUrl,
Signature = @Signature WHERE UserId = @UserId ">
<SelectParameters>
<asp:Parameter Name="UserId" Type="Object" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="HomeTown" />
<asp:Parameter Name="HomepageUrl" />
<asp:Parameter Name="Signature" />
<asp:Parameter Name="UserId" />
</UpdateParameters>
</asp:SqlDataSource>
dies ist der code, der hinter userprofile.aspx.cs :
protected void UserProfileDataSource_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
//Get a reference to the currently logged on user
MembershipUser currentUser = Membership.GetUser();
//Determine the currently logged on user's UserId value
Guid currentUserId = (Guid)currentUser.ProviderUserKey;
//Assign the currently logged on user's UserId to the @UserId parameter
e.Command.Parameters["@UserId"].Value = currentUserId;
}
BEARBEITEN
Ich hatte, ändern Sie die SQL-Abfrage:
SelectCommand= "SELECT [aspnet_Membership].UserId, [HomeTown], [HomepageUrl], [Signature] FROM [UserProfiles] INNER JOIN [aspnet_Membership] ON aspnet_Membership.UserId = UserProfiles.UserId WHERE aspnet_Membership.UserId=@UserId"
onselecting="UserProfileDataSource_Selecting"
UpdateCommand="UPDATE UserProfiles SET
Username = @Username,
HomeTown = @HomeTown,
HomepageUrl = @HomepageUrl,
Signature = @Signature WHERE UserId = @UserId ">
Aber der Fehler immer noch angezeigt:
Ein Feld oder Eigenschaft mit dem Namen 'Benutzer' wurde nicht gefunden auf der ausgewählten Datenquelle
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie die Feldnamen in den UserProfiles Tabelle. Es scheint, dass Sie nicht über einen Benutzernamen Feld. Es ist eine gute Praxis, ausdrücklich die Felder, die Sie AUSWÄHLEN möchten, anstatt mit den
SELECT * FROM ..
syntax.Können Sie versuchen, Neuanordnung der Felder, um zu sehen, ob es nur ein problem mit dem username? d.h.,
Wenn es ein problem mit der datasource, sollten Sie sich die Ausnahme auf 'Heimatstadt' jetzt. Wenn Sie tun, eine Sache, zu versuchen sein würde, das entfernen des @ von der Parametrierung:
BEARBEITEN: Nachdem Sie Ihre geänderte SQL, zwei Dinge:
[aspnet_Membership].UserId
ist Ihr Benutzername, Sie könnenSELECT [aspnet_Membership].UserId AS Username