我是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; }
//...
}
发布于 2019-05-21 05:21:52
@M.K. Kim试试这个:
`
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
https://stackoverflow.com/questions/56228034
复制相似问题