Как показать оповещение и обновить текущую страницу через контроллер с помощью formmethod.метод post в MVC
Я создаю форму обратной связи с помощью FormMethod.Метод Post в mvc. Теперь в моей форме данные сохраняются, но после сохранения страница данных обновляется, так что пользователь не может знать, успешно вставлены данные или нет. Итак, вот почему я хочу предупредить javascript и обновить текущую страницу.
Я сделал много вещей, но ничего не сделал.
Итак, позвольте мне показать вам последнее, что я пробовал в этом коде.
Вот мой взгляд
<script> @ViewBag.scripCall function Callback() { alert("Callback function is working"); } </script> @using (Html.BeginForm("Create", "FeedBack", FormMethod.Post, new { enctype = "multipart/form-data" })) { <div class="container"> <div class="row"> <div class="col-sm-3"> <img src="~/images/default.png" style="margin:10px" height="200" width="200" id="imagePreview" /> <input type="file" name="ImageUpload" accept="image/jpeg, image/png" id="ImageUpload" onchange="ShowImagePreview(this, document.getElementById('imagePreview'))" class="control-label" /> </div> <div class="col-sm-2"> @Html.LabelFor(model => model.FullName, new { @class = "control-label" }) </div> <div class="col-sm-8"> @Html.TextBoxFor(model => model.FullName, new { @class = "form-control", placeholder = "Enter The Name" }) </div> <div class="col-sm-9"> <br /> </div> <div class="col-sm-1"> @Html.LabelFor(model => model.Occupation, new { @class = "control-label" }) </div> <div class="col-sm-8"> @Html.DropDownList("Occupation", ViewData["occupationList"] as SelectList, new {@class="control-label", style="width:250px;" }) </div> <div class="col-sm-9"> <br /> </div> <div class="col-sm-3"> @Html.LabelFor(model => model.UserFeedBack, new { @class = "control-label" }) </div> <div class="col-sm-8"> @Html.TextBoxFor(model => model.UserFeedBack, new { @class = "form-control", placeholder = "Enter FeedBack", style="height:250px;" }) </div> <div class="col-sm-3"> <input type="submit" id="btn_save" class="button" value="Save" /> </div> </div> <div class="row"> <span class="control-label" style="color:red">Note : Please do not upload DSLR photo. It does not support. Thank You...!!!</span> </div> </div> }
Вот мой контроллер
public ActionResult Create(FeedBackViewModel feedbackViewModel) { try { HttpPostedFileBase file = Request.Files["ImageUpload"]; if (file != null) { string fileName = Path.GetFileNameWithoutExtension(feedbackViewModel.ImageUpload.FileName); string extension = Path.GetExtension(feedbackViewModel.ImageUpload.FileName); fileName = fileName + DateTime.Now.ToString("yymmssfff") + extension; feedbackViewModel.ImageUpload.SaveAs(Path.Combine(Server.MapPath("~/images/"), fileName)); } ContentRepository service = new ContentRepository(); int i = service.CreateFeedBack(file, feedbackViewModel); if (i == 1) { ViewBag.scripCall = "Callback();"; return View(); //return Content("<script language='javascript' type='text/javascript'>alert('Thanks for Feedback!');</script>"); } else { return Content("<script language='javascript' type='text/javascript'>alert('Sorry, Something went wrong. Please Try Again...!!!');</script>"); } } catch (Exception ex) { return View();//"Error", new HandleErrorInfo(ex, "StaffRegistration", "Create")); } }
Теперь, в этом коде последняя вещь, которую я попытался показать предупреждение @ViewBag.scripCall, а также обновить текущую страницу, но это также не работает.
Спасибо.
Что я уже пробовал:
Я перепробовал много вещей, но ничего не вышло, и последнее, что я попробовал, т. е.
@ViewBag.scripCallи тоже не сработало
massimiliano aronica
Ну, я бы настаивал на решении ViewBag, но я не вижу никакой модели, переданной в представление в ваших операторах Return View (). Вы также можете попытаться установить новое свойство в своей модели, представляя команду javascript в виде строки, а затем распечатать ее на странице.
Я бы также переместил раздел сценария после формы, или я боюсь, что предупреждение возникнет на пустой странице.
В любом случае посмотрите на источник страницы, когда вы ожидаете получить предупреждение, и проверьте полученный JS-код