温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:MyWebPages51aspx汉化最终版
当前文件:
MyWebPagesStarterKit/Administration/Users.aspx.cs,打开代码结构图
MyWebPagesStarterKit/Administration/Users.aspx.cs,打开代码结构图1//=============================================================================================== 2
// 3
// (c) Copyright Microsoft Corporation. 4
// This source is subject to the Microsoft Permissive License. 5
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx. 6
// All other rights reserved. 7
// 8
//=============================================================================================== 9
10
using System; 11
using System.IO; 12
using System.Net.Mail; 13
using System.Web.Security; 14
using System.Web.UI.WebControls; 15
using System.Web.UI.HtmlControls; 16
using MyWebPagesStarterKit.Controls; 17
using System.Web; 18
using System.Net; 19
20
public partial class Administration_Users : PageBaseClass 21
...{ 22
protected string lang; 23
24
Properties#region Properties 25
/**//// <summary> 26
/// Username of the currently selected user to edit 27
/// </summary> 28
protected string SelectedUserName 29
...{ 30
get 31
...{ 32
return SelectedUser.UserName; 33
} 34
set 35
...{ 36
SelectedUser = Membership.GetUser(value); 37
} 38
} 39
40
protected bool ForcePasswordChange 41
...{ 42
get 43
...{ 44
return !Membership.EnablePasswordRetrieval; 45
} 46
} 47
48
/**//// <summary> 49
/// User that was selected to edit 50
/// </summary> 51
protected MembershipUser SelectedUser 52
...{ 53
get 54
...{ 55
return (MembershipUser)ViewState["SelectedUserName"]; 56
} 57
set 58
...{ 59
ViewState["SelectedUserName"] = value; 60
} 61
} 62
#endregion 63
64
Events#region Events 65
protected void Page_Load(object sender, EventArgs e) 66
...{ 67
//define language for the documentation path 68
lang = System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName; 69
if (!File.Exists(HttpContext.Current.Server.MapPath(string.Format("~/Documentation/" + lang + "/quick_guide.html")))) 70
...{ 71
lang = "en"; 72
} 73
if (!IsPostBack) 74
...{ 75
if (_website.MailSenderAddress == string.Empty) 76
RecoverPasswordWizard.Visible = false; 77
else 78
...{ 79
trMessage.Visible = false; 80
RecoverPasswordWizard.HeaderText = Resources.StringsRes.ctl_RecoverPasswordWizard_HeaderText; 81
82
if (!ForcePasswordChange) 83
...{ 84
ListItemCollection c = new ListItemCollection(); 85
c.Add(new ListItem(Resources.StringsRes.clt_RecoverPasswordWizard_ResetPassword, "0")); 86
c.Add(new ListItem(Resources.StringsRes.clt_RecoverPasswordWizard_KeepPassword, "1")); 87
//ddlResetPassword.DataSource = c; 88
//ddlResetPassword.DataValueField = "Value"; 89
//ddlResetPassword.DataTextField = "Text"; 90
//ddlResetPassword.DataBind(); 91
} else 92
...{ 93
} 94
} 95
96
} 97
lblMessage.Text = string.Empty; 98
99
100
} 101
102
protected override void OnPreRender(EventArgs e) 103
...{ 104
base.OnPreRender(e); 105
trMessage.Visible = (lblMessage.Text != string.Empty); 106
trUpdateUser.Visible = (SelectedUser != null); 107
trCreateUser.Visible = (SelectedUser == null); 108
trSendUserPassword.Visible = (_website.MailSenderAddress != string.Empty); 109
} 110
111
#endregion 112
113
Recover Password Wizard#region Recover Password Wizard 114
protected void RecoverPasswordWizard_OnFinish(object sender, WizardNavigationEventArgs e) 115
...{ 116
RecoverPasswordWizard_OnNext(sender, e); 117
} 118
119
protected void RecoverPasswordWizard_OnNext(object sender, WizardNavigationEventArgs e) 120
...{ 121
WizardStepBase upcomingStep = RecoverPasswordWizard.WizardSteps[e.NextStepIndex]; 122
123
if (upcomingStep.StepType == WizardStepType.Complete) 124
...{ 125
// Preparing finish step display 126
// Send mail 127
MembershipUser u = Membership.GetUser(txtUsername.Text); 128
129
if (u == null) 130
lblResult.Text = Resources.StringsRes.ctl_RecoverPasswordWizard_ResultUserNotFound; 131
132
else ...{ 133
134
string password; 135
// Reset password 136
//if (ForcePasswordChange) 137
password = u.ResetPassword(); 138
//else 139
//{ 140
// if (ddlResetPassword.SelectedItem.Value == "1") 141
// { 142
// password = u.ResetPassword(); 143
// } 144
// else 145
// { 146
// password = u.GetPassword(); 147
// } 148
//} 149
150
// Send mail 151
try 152
...{ 153
string url = string.Concat("http://", Request.Url.Authority, Response.ApplyAppPathModifier("~/Login.aspx")); 154
155
MailMessage mail = new MailMessage(_website.MailSenderAddress, u.Email); 156
mail.SubjectEncoding = System.Text.Encoding.UTF8; 157
mail.Subject = Resources.StringsRes.ctl_RecoverPasswordWizard_PasswordMailSubject; 158
mail.BodyEncoding = System.Text.Encoding.UTF8; 159
mail.IsBodyHtml = false; 160
mail.Body = string.Format(Resources.StringsRes.ctl_RecoverPasswordWizard_PasswordMailBody, url,password,System.Environment.NewLine); 161
162
SmtpClient client = new SmtpClient(_website.SmtpServer); 163
164
//when Smtp user/password/domain is given, SMTP-Authentication has to be used 165
if (_website.SmtpUser != "" && _website.SmtpPassword != "" && _website.SmtpDomain != "") 166
...{ 167
client.UseDefaultCredentials = false; 168
client.Credentials = new NetworkCredential(_website.SmtpUser, _website.SmtpPassword, _website.SmtpDomain); 169
} 170
171
client.Send(mail); 172
} catch 173
...{ 174
lblResult.Text = Resources.StringsRes.ctl_RecoverPasswordWizard_PasswordMailFailed; 175
} 176
177
lblResult.Text = Resources.StringsRes.ctl_RecoverPasswordWizard_PasswordMailSent; 178
} 179
} else if (upcomingStep.StepType == WizardStepType.Step) 180
...{ 181
if (upcomingStep.ID == "stpKeepPassword" && ForcePasswordChange) 182
...{ 183
// skip that part as the question can not be asked due to the provider not implementing password retrieval 184
RecoverPasswordWizard.ActiveStepIndex = e.NextStepIndex + 1; 185
} 186
} 187
} 188
#endregion 189
190
User Overview#region User Overview 191
/**//// <summary> 192
/// Populate User Edit Table 193
/// </summary> 194
/// <param name="sender"></param> 195
/// <param name="e"></param> 196
protected void EditUser_PreRender(object sender, EventArgs e) 197
...{ 198
chkAdmin.Checked = GetAdminChecked(); 199
txtEmail.Text = SelectedUser.Email; 200
txtComment.Text = SelectedUser.Comment; 201
lblUsername.Text = SelectedUserName; 202
} 203
204
protected void gvUsers_RowDataBound(object sender, GridViewRowEventArgs e) 205
...{ 206
if (e.Row.RowType == DataControlRowType.DataRow) 207
...{ 208
LinkButton deleteButton = (LinkButton)e.Row.Controls[e.Row.Controls.Count - 1].Controls[0]; 209
if (deleteButton.CommandName == "delete_user") 210
...{ 211
deleteButton.ToolTip = Resources.StringsRes.adm_Users_DeleteUser; 212
deleteButton.OnClientClick = "return confirm('" + Resources.StringsRes.adm_Users_DeleteWarning + "');"; 213
} 214
} 215
} 216
protected void gvUsers_RowCommand(object sender, GridViewCommandEventArgs e) 217
...{ 218
SelectedUserName = gvUsers.DataKeys[int.Parse(e.CommandArgument.ToString())].Value.ToString(); 219
// check which command has been sent by the Grid 220
switch (e.CommandName) 221
...{ 222
case "edit_details": 223
// Read Username to edit from control and redirect again to this page, including the username to edit 224
225
//Reset Password Recover 226
if (RecoverPasswordWizard.Visible) 227
...{ 228
RecoverPasswordWizard.ActiveStepIndex = RecoverPasswordWizard.WizardSteps.IndexOf(this.stpUsername); 229
txtUsername.Text = ""; 230
} 231
break; 232
case "delete_user": 233
//make sure there is at least one admin in the system 234
if (!Roles.IsUserInRole(SelectedUserName, MyWebPagesStarterKit.RoleNames.Administrators.ToString())) 235
...{ 236
//if not an administrator 237
DeleteUser(); 238
} 239
else 240
...{ 241
//make sure there is at least one administrator 242
if (Roles.GetUsersInRole(MyWebPagesStarterKit.RoleNames.Administrators.ToString()).Length > 1) 243
...{ 244
DeleteUser(); 245
} 246
else 247
...{ 248
lblMessage.Text += Resources.StringsRes.adm_Users_LastAdminRemains; 249
SelectedUser = null; 250
} 251
} 252
break; 253
} 254
} 255
256
private void DeleteUser() 257
...{ 258
Membership.DeleteUser(SelectedUserName, true); 259
SelectedUser = null; 260
Response.Redirect(Request.ServerVariables["SCRIPT_NAME"], true); 261
} 262
protected void btnUpdateCancel_Click(object sender, EventArgs e) 263
...{ 264
SelectedUser = null; 265
} 266
267
#endregion 268
269
Create User Wizard#region Create User Wizard 270
void CreateUserWizard_UserCreated(object sender, EventArgs e) 271
...{ 272
SelectedUser = null; 273
gvUsers.DataBind(); 274
} 275
276
277
/**//// <summary> 278
/// Update the selected user with the values that were entered 279
/// </summary> 280
/// <param name="sender"></param> 281
/// <param name="e"></param> 282
protected void btnUpdateSave_Click(object sender, EventArgs e) 283
...{ 284
MembershipUser memUser = SelectedUser; 285
memUser.Email = txtEmail.Text; 286
memUser.Comment = txtComment.Text; 287
288
try 289
...{ 290
Membership.UpdateUser(memUser); 291
292
if (chkAdmin.Checked && !Roles.IsUserInRole(SelectedUserName, MyWebPagesStarterKit.RoleNames.Administrators.ToString())) 293




