Показать сообщение пользователю после сохранения данных - PullRequest
0 голосов
/ 24 апреля 2019

Я хочу отобразить успешное сообщение пользователю после сохранения данных. Я создаю Viewbag в контроллере и вызываю его в поле зрения. После нажатия кнопки сохранения данные сохраняются, но сообщение об успехе не отображается. он немедленно перенаправляет на страницу индекса. Ниже мой код, спасибо

Контроллер

  [HttpPost]
  [ValidateAntiForgeryToken]
  public ActionResult Create(ParamNoRekeningSumberDana model)
  {
     ViewBag.SuccessCreate = "";
     if (ModelState.IsValid)
     {
          ParamNoRekeningSumberDana newrecord = new ParamNoRekeningSumberDana();
          newrecord.ID = Guid.NewGuid();
          newrecord.AccountNo = model.AccountNo;
          newrecord.CreatedBy = Session["UserName"].ToString();

          db.ParamNoRekeningSumberDanas.Add(newrecord);
          db.SaveChanges();
          ViewBag.SuccessCreate = "Saved successfully";

          return RedirectToAction("Index");
       }
       else{
          return View(model);
       }
  }

View

@{
  if (ViewBag.SuccessCreate != null){
    <script type="text/javascript">
        var temp = @Html.Raw(Json.Encode(ViewBag.SuccessCreate));
        alert(temp);
    </script>
  }
}
@using (Html.BeginForm())
{
    <div class="form-group">
        @Html.LabelFor(model => model.AccountNo, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownListFor(model => model.AccountNo, (List<SelectListItem>)ViewBag.AccountNos, new { @class = "form-control" })
            @Html.ValidationMessageFor(model => model.AccountNo, "", new { @class = "text-danger" })
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Create" class="btn btn-default" />
        </div>
    </div>
}

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Взгляните на этот вопрос ( Установите Viewbag перед перенаправлением ), где они объясняют, что вы должны использовать TempData поверх Viewbag в этих ситуациях.

Когда вы возвращаете View, стиль Viewbag применяется к контексту View. Но когда вы используете RedirectToAction, это на самом деле перенаправление HTTP, поэтому .NET «очищает» ViewBag, создавая другой экземпляр для использования на этой новой странице.

Подробнее об этом можно прочитать здесь: https://www.c -sharpcorner.com / blogs / viewdata-vs-viewbag-vs-tempdata-in-mvc1

0 голосов
/ 24 апреля 2019

Контроллер

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(ParamNoRekeningSumberDana model)
{
    if (ModelState.IsValid)
    {
        ParamNoRekeningSumberDana newrecord = new 
        ParamNoRekeningSumberDana();
        newrecord.ID = Guid.NewGuid();
        newrecord.AccountNo = model.AccountNo;
        newrecord.CreatedBy = Session["UserName"].ToString();

        db.ParamNoRekeningSumberDanas.Add(newrecord);
        db.SaveChanges();
        TempData["SuccessCreate"] = "Saved successfully";

        return RedirectToAction("Index");
   }
   else
   {
         return View(model);
   }

}

Просмотр

  @{
     if (ViewBag.SuccessCreate != null){
       <script type="text/javascript">
        var temp = '@TempData["SuccessCreate"]';
        alert(temp);
       </script>
     }
  }
  @using (Html.BeginForm())
  {
    <div class="form-group">
        @Html.LabelFor(model => model.AccountNo, htmlAttributes: new { @class 
         = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownListFor(model => model.AccountNo, 
   (List<SelectListItem>)ViewBag.AccountNos, new { @class = "form-control" })
            @Html.ValidationMessageFor(model => model.AccountNo, "", new { 
     @class = "text-danger" })
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Create" class="btn btn-default" />
        </div>
    </div>
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...