You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC提交表单时保存当前登录用户名至数据库的方法

当然可以实现!

你用ASP.NET Identity的话,获取当前登录用户信息是很方便的,咱们直接修改你的代码就能完成需求:

第一步:确保实体类有存储用户信息的属性

首先检查你的PRview类,需要添加一个用来存储用户名(或用户ID)的属性,比如:

public class PRview
{
    // 你已有的其他属性...
    public string Username { get; set; } // 新增这个属性存储用户名
    // 如果更推荐存储用户ID(避免用户名修改导致数据不一致),可以加:
    // public string UserId { get; set; }
}

添加后记得通过EF迁移更新数据库表结构哦。

第二步:修改Save方法,赋值当前登录用户信息

在你的Save方法里,提交表单时获取当前登录用户的用户名,然后赋值给PRview对象,再保存到数据库。修改后的代码如下:

[Authorize] // 加上这个特性,确保只有登录用户能提交表单
[HttpPost]
public ActionResult Save(PRview prview)
{
    if (!ModelState.IsValid)
    {
        var viewModel = new NewPRViewModel
        {
            PRview = prview,
            Currencytypes = _context.Currencytypes.ToList()
        };
        return View("NewPR", viewModel);
    }

    // 获取当前登录用户的用户名
    var currentUsername = User.Identity.Name;

    if (prview.Id == 0)
    {
        // 新增表单记录时,把用户名赋值给PRview
        prview.Username = currentUsername;
        _context.PRviews.Add(prview);
    }
    else
    {
        var prviewInDb = _context.PRviews.Single(c => c.Id == prview.Id);
        prviewInDb.SupplierName = prview.SupplierName;
        prviewInDb.Brand = prview.Brand;
        prviewInDb.Qty = prview.Qty;
        prviewInDb.Unitprice = prview.Unitprice;
        // 如果编辑时也需要更新用户名(比如记录最后修改人),就加上这行;不需要可以去掉
        prviewInDb.Username = currentUsername;
    }

    _context.SaveChanges();
    return RedirectToAction("Index", "PRview");
}

额外提示:存储用户ID更稳妥

如果担心用户名可能被修改,导致表单记录里的用户名和实际用户信息不一致,推荐存储用户ID而不是用户名:

  1. 在PRview里添加public string UserId { get; set; }
  2. 引用Microsoft.AspNet.Identity命名空间
  3. 赋值时改成:
var currentUserId = User.Identity.GetUserId();
prview.UserId = currentUserId;

这样不管用户怎么修改用户名,你都能通过UserId关联到正确的用户信息~

内容的提问来源于stack exchange,提问作者dwarakesh sparki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:52:17