Как использовать кнопку save для сохранения в обоих случаях insert и update в create action HTTP post
Проблема
Как использовать кнопку Сохранить в действии создать, чтобы сохранить в обоих случаях вставку и обновление с помощью шаблона репозитория ?
и какие изменения я внесу в виду, чтобы принять обновление и вставить .
то что я пишу это когда сделать новую запись или обновить запись а затем использовать кнопку Сохранить Она будет сохранена с помощью действия создать в контроллере сотрудника с помощью HTTP post
Я использую шаблон репозитория универсальные шаблоны в Visual студии 2017 ядра asp.net 2.1 с версии SQL Server 2012 с
Что я уже пробовал:
<pre lang="c#">public class EmployeesController : Controller { private readonly IEmployees _context; public EmployeesController(IEmployees context) { _context = context; } [HttpPost] public IActionResult Create() { How to use Create Action for insert and update using repository pattern return View(); } create view <form asp-action="Create"> <div class="form-group"> <label asp-for="EmployeeId" class="control-label"></label> <input asp-for="EmployeeId" class="form-control" /> <span asp-validation-for="EmployeeId" class="text-danger"></span> </div> <div class="form-group"> <label asp-for="BranchCode" class="control-label"></label> <input asp-for="BranchCode" class="form-control" /> <span asp-validation-for="BranchCode" class="text-danger"></span> </div> <div class="form-group"> <label asp-for="EmployeeName" class="control-label"></label> <input asp-for="EmployeeName" class="form-control" /> <span asp-validation-for="EmployeeName" class="text-danger"></span> </div> <button id="BtnSave" style="display:inline">Save</button> </form> </div> </div> namespace TAB.Data.InfraStructure { public class EFRepository<T> : IRepository<T> where T : class { protected TabDbContext _context { get; set; } public EFRepository(TabDbContext context) { _context = context; } public virtual T Add(T t) { _context.Set<T>().Add(t); _context.SaveChanges(); return t; } public virtual async Task<T> AddAsyn(T t) { _context.Set<T>().Add(t); await _context.SaveChangesAsync(); return t; } public virtual T Find(Expression<Func<T, bool>> match) { return _context.Set<T>().SingleOrDefault(match); } public virtual async Task<T> FindAsync(Expression<Func<T, bool>> match) { return await _context.Set<T>().SingleOrDefaultAsync(match); } public ICollection<T> FindAll(Expression<Func<T, bool>> match) { return _context.Set<T>().Where(match).ToList(); } public async Task<ICollection<T>> FindAllAsync(Expression<Func<T, bool>> match) { return await _context.Set<T>().Where(match).ToListAsync(); } public virtual T Update(T t, object key) { if (t == null) return null; T exist = _context.Set<T>().Find(key); if (exist != null) { _context.Entry(exist).CurrentValues.SetValues(t); _context.SaveChanges(); } return exist; } public virtual async Task<T> UpdateAsyn(T t, object key) { if (t == null) return null; T exist = await _context.Set<T>().FindAsync(key); if (exist != null) { _context.Entry(exist).CurrentValues.SetValues(t); await _context.SaveChangesAsync(); } return exist; } public virtual void Save() { _context.SaveChanges(); } public async virtual Task<int> SaveAsync() { return await _context.SaveChangesAsync(); } public virtual IQueryable<T> FindBy(Expression<Func<T, bool>> predicate) { IQueryable<T> query = _context.Set<T>().Where(predicate); return query; }