繁体   English   中英

如何创建有关谁创建元素的信息的列

[英]How can i create column with information about who Created an element

你能帮助我吗。 如何使用有关谁创建了一个元素的信息来创建列(列CreatedBy)我使用Windows身份验证创建了ASP Net Core 2.0 MVC Web应用程序。 我实现了有关谁最后一次修改成功的信息,但我无法通过CreatedBy来获取信息。 我的模特是

 public class TestModel
    {
        public int Id { get; set; }
        public string Description { get; set; }
        public string CreatedBy { get; set; }
        [DataType(DataType.Date)]
        public DateTime Created { get;}
        public TestModel()
        {
            Created = DateTime.Now;
        }
        public string ModifiedBy { get; set; }
        public DateTime Modified { get; set; }
    }

我的创建者控制器

public async Task<IActionResult> Create([Bind("Id,Description")] TestModel testModel)
        {
            if (ModelState.IsValid)
            {
                _context.Add(testModel);
                testModel.CreatedBy = this.User.Identity.Name;
               // testModel.ModifiedBy = this.User.Identity.Name;
                testModel.Modified = DateTime.Now;
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }
            return View(testModel);
        }

编辑控制器

public async Task<IActionResult> Edit(int id, [Bind("Id,Description")] TestModel KestModel)
        {
            if (id != KestModel.Id)
            {
                return NotFound();
            }

            if (ModelState.IsValid)
            {
                try
                {

                  await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!TestModelExists(KestModel.Id))
                    {
                        return NotFound();
                    }
                    else
                    {
                        throw;
                    }
                }
                return RedirectToAction(nameof(Index));
            }


            return View();
        }

根据您的评论,我了解到您想根据更新请求更新Modifyby并在创建请求中分配createdby,

为此,您应检查是否已分配ID,如果已分配ID,则不是更新请求,否则是创建请求

尝试以下代码更改

public async Task<IActionResult> Create([Bind("Id,Description")] TestModel testModel)
{
    if (ModelState.IsValid)
    {                   
        if(testModel.Id > 0){
            // the entity is already created and it is modify request
            _context.Entry(testModel).State = EntityState.Modified;

            testModel.ModifiedBy = this.User.Identity.Name;
            testModel.Modified = DateTime.Now;
        }
        else{
            // it is create request
            _context.Entry(testModel).State = EntityState.Added;            

            testModel.CreatedBy = this.User.Identity.Name;
            testModel.Created = DateTime.Now;
        }            

        await _context.SaveChangesAsync();
        return RedirectToAction(nameof(Index));
    }
    return View(testModel);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM