Постоянные данные в контроллере ASP.NET MVC - PullRequest
0 голосов
/ 20 октября 2018

Я хочу использовать одно и то же представление для вставки и обновления данных в базе данных.

Когда я нахожусь в «режиме редактирования», мне нужно знать, каковы значения до и после издания (длязнать, что изменилось, и выполнять операции, основанные на этом).

Я не могу сохранить данные «перед редактированием» в модели, поскольку они не отображаются, и я не могу сохранить эти данные в контроллере, поскольку новый экземплярсоздано между get и post.

Например, у меня нет другой идеи, что использование статического класса или скрытых полей, но для меня это не очень хорошая практика.

Как достичьчто правильно?

Спасибо

1 Ответ

0 голосов
/ 20 октября 2018

Вы можете увидеть более старые данные в
var data = context.DEMO_MAST.Where(x => x.ID == model.ID).FirstOrDefault(); и новые данные в Модель и только при использовании If Условие, которое вы можете выполнить AddEdit обе вещи в одном методе.

Метод AddEdit

 public int AddOrEdit(DEMO_MAST model)
            {
                try
                {
                    var data = context.DEMO_MAST.Where(x => x.ID == model.ID).FirstOrDefault();
                    if (data == null)
                    {
                        model.CREATED_ON = DateTime.Now;
                        this.context.DEMO_MAST.Add(model);
                    }
                    else
                    {
                        model.MODIFIED_ON = DateTime.Now;
                        this.context.Entry(data).CurrentValues.SetValues(model);
                    }
                    int flg = this.context.SaveChanges();
                    return flg;
                }
                catch (Exception ex)
                {
                    return 0;
                }
            }

Найти

public DEMO_MAST Find(int ID)
{
  return context.DEMO_MAST.where(x=>x.ID==ID).FirstorDefault();
}

Контроллер

[HttpGet]
public ActionResult Index(int ID)
{
   DEMO_MAST model=new DEMO_MAST();
  if(ID>0)
  {
     model=Find(ID);   
  } 
return View(model);
}

[HttpPost]
public ActionResult Index(DEMO_MAST model)
{
  if(ModelState.IsValid)
  {
     int i = AddEdit(model); 
     if(i>0) 
     {
       ViewBag.Message="Record AddEdit Successfully";
     }
     else
     {
       ViewBag.Message="Error";
     }
  }
return View(model);
}

Поэтому при запуске приложения отображается простой Index() вид.

Индексный вид для получения данных

   using (Html.BeginForm("Index", "Home"))
    {
        <div class="row">
            <div class="col-md-6 col-sm-3">
            </div>
            <div class="col-md-6 col-sm-9">
                <div id="sample_6_filter" class="dataTables_filter">
                    <label>
                        @Html.TextBox("ID", ViewBag.ID == null ? "" : (string)ViewBag.ID, new { @class = "form-control input-inline", placeholder = "ID" })
                        <button class="btn green-haze" type="submit" id="submit">
                            <i class="fa fa-search"></i>
                        </button>
                    </label>
                </div>
            </div>
        </div>
    }
    @using (Html.BeginForm("Index", "Home", FormMethod.Post))
    {
        @Html.HiddenFor(x => x.ID)
        @Html.HiddenFor(x => x.CREATED_ON)
        <div class="form-horizontal">

            <div class="form-group">
                <label class="control-label col-sm-4">Name</label>
                <div class="col-sm-5">
                    @Html.TextBoxFor(a => a.Name, new { @class = "form-control", @maxlength = "50" })
                </div>
                <div class="col-sm-3 text-danger">

                </div>
            </div>
 <div class="form-group">
       <div class="col-sm-12 text-center">
                <button type="submit" name="command" value="createUser" class="btn btn-lg btn-green hvr-underline-from-center">Submit</button>
       </div>
  </div>
    }

Вам необходимо ввести ID или любое поле Uniq вашей базы данных, чтобы получить результат в View.Когда вы нажимаете на кнопку, вызывается метод [HttpGet] Index и отображаются записи.

И после этого вы можете изменить свои данные. Нажмите на кнопку отправки, чтобы перейти к
'[HttPost] Index' остаются действия, выполняемые автоматически в соответствии с приведенным выше кодом и методами.

Теперь вам просто нужно установить свои данные в поле зрения. Вот и все.
Надеюсь, выПонимаю!!Наслаждайтесь !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...