我在我创建的网站上有一个“个人资料编辑”部分,允许用户更新他们的电子邮件地址和密码。它们运行良好,但目前,他们被迫更改密码。
我可以设置它,因此不需要任何字段,但信息会根据是否有输入进行更新吗?
目前,如果我没有输入密码,我就会收到此信息:
参数'newPassword'不能为空。
由于
using System;
using nForum.BusinessLogic;
using umbraco;
using umbraco.cms.businesslogic.member;
using System.Web.Security;
namespace nForum.usercontrols.nForum.membership
{
public partial class ForumMemberProfileEdit : BaseForumUsercontrol
{
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
LoadProfile();
}
}
private void LoadProfile()
{
if (CurrentMember == null | IsBanned)
{
membereditprofile.Visible = false;
}
else
{
//We have a Member logged in fill the data
tbEmail.Text = CurrentMember.MemberEmail;
}
}
protected void BtnSubmitClick(object sender, EventArgs e)
{
btnSubmit.Enabled = false;
var cMem = Member.GetCurrentMember();
cMem.Email = tbEmail.Text;
MembershipUser u;
u = System.Web.Security.Membership.GetUser();
u.ChangePassword(u.ResetPassword(), tbNewPassword.Text);
//Save member
cMem.Save();
//Generate member Xml Cache
cMem.XmlGenerate(new System.Xml.XmlDocument());
// Show message
Response.Redirect(string.Concat(CurrentPageAbsoluteUrl, "?m=", library.GetDictionaryItem("ProfileUpdated")));
}
}
}
和ASP
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ForumMemberProfileEdit.ascx.cs" Inherits="nForum.usercontrols.nForum.membership.ForumMemberProfileEdit" %>
<div id="membereditprofile" class="membereditprofile" runat="server">
<dl class="form">
<!-- E-mail field -->
<dt><label for="<%= tbEmail.ClientID %>">Email</label></dt>
<dd><asp:TextBox ToolTip="Enter email address" CssClass="required email" ID="tbEmail" runat="server" /></dd>
<!-- New Password field -->
<dt><label for="<%= tbNewPassword.ClientID %>">New Password</label></dt>
<dd><asp:TextBox ToolTip="Enter your new password" CssClass="pass1" onkeyup="checkPass()" TextMode="password" ID="tbNewPassword" runat="server" /></dd>
<!-- Confirm New Password field -->
<dt><label for="<%= tbConfirmPassword.ClientID %>">Confirm Password</label></dt>
<dd><asp:TextBox ToolTip="Confirm your new password" CssClass="pass2" onkeyup="checkPass()" TextMode="password" ID="tbConfirmPassword" runat="server" /></dd>
<span id="confirmMessage" class="confirmMessage"></span>
<asp:Label id="Msg" ForeColor="maroon" runat="server" />
<!-- Compare Passwords -->
<asp:CompareValidator ID="CompareValidator" runat="server" ControlToValidate="tbNewPassword" ControlToCompare="tbConfirmPassword" CssClass="hideError" ErrorMessage="Password does not match!" ></asp:CompareValidator>
<!-- Compare Passwords -->
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="tbConfirmPassword" ControlToCompare="tbNewPassword" CssClass="hideError" ErrorMessage="Password does not match!" ></asp:CompareValidator>
<dt> </dt>
<dd><asp:Button ID="btnSubmit" runat="server" Text="Update Profile" onclick="BtnSubmitClick" CssClass="btnSubmit" /></dd>
</dl>
</div>