【问题标题】:ASP.NET MVC Updating User Profile (Entity Framework)ASP.NET MVC 更新用户配置文件(实体框架)
【发布时间】:2023-03-23 00:00:02
【问题描述】:

我是 ASP.NET 的初学者,在用户登录后添加“用户更新”功能时遇到问题。

我已尝试将代码添加到控制器页面,如下所示,但它不起作用。如果有人能给我建议如何解决这些问题,我将不胜感激。

我使用了实体框架,下面是我的代码

-控制器-

public class AccountController : Controller
    {
        TravelExpertsEntities db = new TravelExpertsEntities();
...


 public ActionResult Edit()
        {


            string username = User.Identity.Name;

            // Fetch the userprofile
            Customer user = db.Customers.Where(u => u.CustUserId.Equals(username)).FirstOrDefault();

            // Construct the viewmodel
            Customer model = new Customer();
            model.CustFirstName = user.CustFirstName;
            model.CustLastName = user.CustLastName;
            model.CustEmail = user.CustEmail;
           //...

            return View(model);


        }

        [HttpPost]
        public ActionResult Edit(Customer user)
        {
            using (TravelExpertsEntities db = new TravelExpertsEntities())
            {

                var usr = db.Customers.Where(u => u.CustUserId.Equals(user.CustUserId) && u.CustPassword.Equals(user.CustPassword)).FirstOrDefault();
                if (usr != null)
                {
                    // Update fields
                    user.CustFirstName = usr.CustFirstName;
                    user.CustLastName = usr.CustLastName;
                    user.CustEmail = usr.CustEmail;
                    //...
                    db.Entry(user).State = EntityState.Modified;

                    db.SaveChanges();
                }
                return RedirectToAction("Home", "Home");
            }

            return View(user);
        }
}

-MODEL-
public partial class Customer
    {
        [Key]
        public int CustomerId { get; set; }

        [DisplayName("First Name")]
        [Required(ErrorMessage = "First Name is required")]
        public string CustFirstName { get; set; }

        [DisplayName("Last Name")]
        [Required(ErrorMessage = "Last Name is required")]
        public string CustLastName { get; set; }

        [DisplayName("Address")]
        [Required(ErrorMessage = "Address is required")]
        public string CustAddress { get; set; }
     //...

    }

【问题讨论】:

  • 您是否在数据库中以纯文本格式保存密码?如果不是,则从 where 条件中删除 u.CustPassword.Equals(user.CustPassword)。

标签: asp.net model-view-controller profile


【解决方案1】:

@M.K.金试试这个:

`

    public ActionResult Edit()
    {


        string username = User.Identity.Name;

        // Fetch the userprofile
        Customer user = db.Customers.Where(u => u.CustUserId.Equals(username)).FirstOrDefault();


        return View(user);
    }

`

所以你可以改变你的控制器看起来像这样

[HttpPost]
    public ActionResult Edit(Customer user)
    {
        using (TravelExpertsEntities db = new TravelExpertsEntities())
        {
            if (user!= null)

                //...
                db.Entry(user).State = EntityState.Modified;

                db.SaveChanges();
            }
            return RedirectToAction("Home", "Home");
        }

        return View(user);
    }

但是下次使用 ViewModel 将是一个很好的编码习惯。这可能会有所帮助:https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions/mvc-music-store/mvc-music-store-part-3

【讨论】:

  • 感谢您的回复。但它不起作用..你能更具体一点吗>?
  • 对答案做了一些修改,希望对您解决问题有所帮助。
  • 谢谢您,但仍然无法正常工作。我应该添加一些代码吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-26
  • 2010-09-25
相关资源
最近更新 更多