Nishant.Chauhan80 Ответов: 1

Как обновить и вставить один и тот же метод контроллера в MVC5


код:-

[HttpPost]
       [AllowAnonymous]
       [ValidateAntiForgeryToken]
       public ActionResult Index(HTMLDisplayViewModel model)
       {
           try
           {

                   // Verification
                   if (ModelState.IsValid)
                   {


                   this.databaseManager.Insert_HTML_Content(model.HtmlContent);
                       //context.Entities.Add(entity);

                   // save info.

                       // Commit database.
                       this.databaseManager.SaveChanges();

                       // Settings.
                       model.HTMLContentList = this.databaseManager.display_all_HTML_Content().ToList();
                       model.Message = "Information successfully!! saved.";
                       model.IsValid = true;

                   }
                   else
                   {
                       if (string.IsNullOrEmpty(model.HtmlContent))
                       {
                           // Settings.
                           model.HTMLContentList = new List<display_all_HTML_Content_Result>();
                           model.Message = "Require field can not be emptied";
                           model.IsValid = false;
                       }
                   }
           }
           catch (Exception ex)
           {
               // Info
               Console.Write(ex);
           }

           // Info
           return this.View(model);
       }


Что я уже пробовал:

я хочу добавлять и обновлять текст через ту же текстовую область в MVC 5

1 Ответов

Рейтинг:
2

Sandeep Mewara

Вы можете иметь следующую логику на месте:
Для сохраняемой сущности сохраните идентификатор в качестве одного из параметров (сопоставленного с уникальным полем в БД). Не делайте это поле обязательным для проверки модели.

Теперь, когда это новая сущность для вставки, этот идентификатор будет равен нулю и определен после вставки в БД. Если сущность обновляется, то этот идентификатор будет иметь некоторое сопоставление данных с существующими данными в БД.

Вы можете использовать это значение поля ID в качестве флага, чтобы узнать и реализовать, должен ли он быть вставкой или обновлением потока. Сохраните это поле идентификатора как скрытое поле в вашем представлении:

@Html.HiddenFor(m => m.Id)

Ваш код контроллера изменится на:
if (ModelState.IsValid)
{
    if (!model.Id.HasValue){ 
    {
       // Do insert ...
    } else {
       // Do update ...
    }
}


Попробуйте.

Кстати, вы должны держать insert &update отдельно и иметь единую ответственность за каждый поток с точки зрения метода контроллера. Там чище. Примеры:
Учебник: реализация функциональности CRUD с помощью Entity Framework в ASP.NET MVC | Microsoft Docs[^]
Выполните список, вставку, обновление и удаление в одном представлении в ASP.NET база знаний MVC | BinaryIntellect[^]