Member 11339247 Ответов: 1

Как показать оповещение и обновить текущую страницу через контроллер с помощью 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-код

1 Ответов

Рейтинг:
1

Laxmidhar tatwa technologies

вы не отображали свое пространство имен

В верхней части страницы просмотра добавьте свое пространство имен с именем модели
@модель имя_пространства_имен.Модели.FeedBackViewModel