簡體   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