Вернуться к тому же виду после отправки формы в ASP. NET MVC 5 - PullRequest
0 голосов
/ 09 января 2020

Я создал контактную форму. В этой контактной форме пользователь может ввести такие данные, как имя, фамилия, номер телефона и т. Д. После того, как пользователь отправляет форму, я выполняю проверку на стороне сервера. Я хотел бы перенаправить пользователя обратно в то же представление, если проверка прошла успешно и неуспешно. Это работает без проблем. Но позиция прокрутки представления снова наверху. Но форма находится в самом низу. Пользователь должен снова отобразить форму. Другими словами: я хочу вернуть пользователю то же представление, но сохранить позицию прокрутки. Как мне добиться этого в ASP. NET MVC 5?

Мой код на стороне сервера выглядит так:

public ActionResult Contact(ServiceModel model)
        {
            if (ModelState.IsValid)
            {
                ViewBag.SuccessMessage = " succeeded";
                return View("Index");
            }
            else
            {
                if (!this.IsCaptchaValid(""))
                {
                    ViewBag.ErrorMessage = "Error. Try again.";
                }
                return View("Index", model);
            }
        }

Спасибо.

1 Ответ

0 голосов
/ 16 января 2020

Спасибо Нате Миллер за вашу помощь. Решение: в ViewBag вы должны войти в раздел, к которому хотите вернуться. Это может быть, например, следующая инструкция в контроллере:

ViewBag.Section = "mySection"; //This refers to the element in the .cshtml page that has the ID 'mySection'.

Затем необходимо проверить в файле .cs html в JavaScript, установлена ​​ли переменная Section в ViewBag. Если это так, то вы должны перейти к определенной позиции. Это работает следующим образом:

@if (ViewBag.Section!=null)
{
    <script>
        $(function () {              
                window.location.hash = '#@ViewBag.Section';
        });
    </script>
}

Решение исходит из вопроса, который уже задавался в Stackoverflow. Здесь - ссылка на него.

...