微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C# MVC 允许更新重新编辑的字段

如何解决C# MVC 允许更新重新编辑的字段

我在 mvc 视图上有一个表单,其中包含姓名、用户名、电子邮件地址、分支机构和部门的下拉列表。有 2 个存储过程正在检查重复的用户名和电子邮件地址。如果用户单击更新按钮,则会显示错误

场景一

  1. 如果用户删除用户名并输入唯一的用户名,则表单将不会提交,因为电子邮件地址仍然存在于数据库中。

如果用户放回原始用户名,我如何允许更新继续

  <xsl:template match="root">
      <xsl:copy>
          <xsl:for-each 
            select="distinct-values(
                      p ! 
                      (let $tokens := tokenize(.,'\s*,\s*') 
                           return (head($tokens),tail($tokens) ! (substring-before(head($tokens),'(') || .)))
                    )" expand-text="yes">
              <p>{.}</p>
          </xsl:for-each>
      </xsl:copy>
  </xsl:template>

解决方法

将旧值(单独的用户名然后是电子邮件)与新值进行比较,如果它们相同,则不要检查它之前是否存在。如果它们不同,则检查新的是否唯一

如果电子邮件是 'user1@example.com' ,则用户名 = 'user1'

他输入了电子邮件 = 'user1@eample.com' 但用户名 = 'user1updated'

您首先检查旧电子邮件和新电子邮件(两者都是“user1@example”)然后就可以了。 然后用新用户名检查旧用户名(这里是不同的)所以我检查数据库中是否存在新用户名('user1updated'),如果它不存在我更新,否则不更新

,
 [HttpPost]
    public async Task<IActionResult> Update(ApplicationUserModel model)
    {
        string redirectUrl;
        var appmodel = new ApplicationUserModel();
        appmodel.UserDetails = await ClaimsService.GetApplicationUserByID(model.Users.UserID);
        appmodel.Users = await ClaimsService.GetUserNameByID(model.Users.UserName);
        appmodel.User = await ClaimsService.GetEmailAddressIfExists(model.Users.EmailAddress);
        if(appmodel.UserDetails.EmailAddress == model.Users.EmailAddress || appmodel.UserDetails.UserName == model.Users.UserName)
        {
            if (!appmodel.UserDetails.Name.Equals(model.Users.Name) || appmodel.UserDetails.BranchID != model.Users.BranchID || appmodel.UserDetails.DepartmentID != model.Users.DepartmentID)
            {
                await ClaimsService.UpdateUserAsync(model.Users);
                redirectUrl = string.Format("/ApplicationUsers/Users");
                return RedirectToAction("Message","Home",new { type = Service.Utils.StringHelper.Types.UpdateSuccess,url = redirectUrl });
            }
            else if (appmodel.UserDetails.EmailAddress != model.Users.EmailAddress || appmodel.UserDetails.UserName != model.Users.UserName)
            {
                if (!appmodel.UserDetails.Name.Equals(model.Users.Name) || appmodel.UserDetails.BranchID != model.Users.BranchID || appmodel.UserDetails.DepartmentID != model.Users.DepartmentID)
                {
                    await ClaimsService.UpdateUserAsync(model.Users);
                    redirectUrl = string.Format("/ApplicationUsers/Users");
                    return RedirectToAction("Message",url = redirectUrl });
                }

                if(appmodel.UserDetails.EmailAddress == model.Users.EmailAddress)
                {
                    model.EmailAddressErrorMessage = "";
                }
                if(appmodel.UserDetails.EmailAddress != model.Users.EmailAddress)
                {
                    model.EmailAddressErrorMessage = "Email address already exists";
                }
                if(appmodel.UserDetails.UserName == model.Users.UserName)
                {
                    model.UserNameErrorMessage = "";
                }
                if (appmodel.UserDetails.UserName != model.Users.UserName)
                {
                    model.UserNameErrorMessage = "Username already exists";
                }
                model.Username = appmodel.Users.UserName;
                model.EmailAddress = appmodel.User.EmailAddress;
                model.Users = new Model.Applications.Tables.tblUsers() { Archive_User = "0",StatusID = 1 };
                model.BranchSelectList = new SelectList(await BranchServices.GetBranchByCompanyID(1),"BranchID","BranchFullName");
                model.DepartmentSelectList = new SelectList(await DepartmentService.GetAllActiveDepartments(1),"DepartmentID","Department");
                return View(model);
            }
            await ClaimsService.UpdateUserAsync(model.Users);
            redirectUrl = string.Format("/ApplicationUsers/Users");
            return RedirectToAction("Message",url = redirectUrl });
        }


        if (appmodel.UserDetails.EmailAddress == model.Users.EmailAddress)
        {
            model.EmailAddressErrorMessage = "";
        }
        if (appmodel.UserDetails.EmailAddress != model.Users.EmailAddress)
        {
            model.EmailAddressErrorMessage = "Email address already exists";
        }
        if (appmodel.UserDetails.UserName == model.Users.UserName)
        {
            model.UserNameErrorMessage = "";
        }
        if (appmodel.UserDetails.UserName != model.Users.UserName)
        {
            model.UserNameErrorMessage = "Username already exists";
        }
        model.Username = appmodel.Users.UserName;
        model.EmailAddress = appmodel.User.EmailAddress;
        model.Users = new Model.Applications.Tables.tblUsers() { Archive_User = "0",StatusID = 1 };
        model.BranchSelectList = new SelectList(await BranchServices.GetBranchByCompanyID(1),"BranchFullName");
        model.DepartmentSelectList = new SelectList(await DepartmentService.GetAllActiveDepartments(1),"Department");
        return View(model);

    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。