Перенаправить на страницу с идентификатором в Razor Pages

Я пытаюсь заставить мое приложение перенаправить на предыдущую страницу после обновления базы данных, но я не могу понять этого. Что усложняет то, что предыдущая страница - это не просто страница. Он заполняется извлеченной информацией, но с определенной строкой в ​​базе данных, поэтому URL-адрес

бла-бла-бла ... / ProjectDetails? id = (идентификационный номер)

Я пробовал использовать методы перенаправления, но они не так просты, как я надеялся. Может ли кто-нибудь помочь мне понять, как вернуться на предыдущую страницу?

Просмотр

        <form method="post">
            <select class="custom-select mb-4 col-6" name="Assignee">
                <option>John</option>
                <option>Jane</option>
                <option>Jim</option>
                <option>Juju</option>
            </select>
            <br>
            <button type="submit" class="btn btn-info">Save</button>
            <a class="btn btn-danger" asp-page="./Teamlead">Cancel</a>
        </form>

Отложенный код

public async Task<IActionResult> OnPostAsync(int id)
        {
            Submission = _SubmissionContext.Submissions
                            .Where(s => s.ID == id).First();
            Submission.AssignedTo = Assignee;
            await _SubmissionContext.SaveChangesAsync();

            return RedirectToRoute("./ProjectDetails"); //PROBLEM HERE

        }

person athomas    schedule 31.01.2019    source источник


Ответы (2)


Вам необходимо передать идентификатор перенаправленной странице. Для этого можно использовать анонимный тип, например:

public async Task<IActionResult> OnPostAsync(int id)
    {
        Submission = _SubmissionContext.Submissions
                        .Where(s => s.ID == id).First();
        Submission.AssignedTo = Assignee;
        await _SubmissionContext.SaveChangesAsync();

        return RedirectToRoute("./ProjectDetails", new { id = Submission.ID });
    }
person Brad Patton    schedule 01.02.2019

Вам следует попробовать украсить вид страницы бритвы вверху атрибутами маршрута следующим образом:

@page "{id}"

Следующая ссылка ниже должна помочь вам получить больше информации о параметрах маршрутизации:

https://www.mikesdotnetting.com/article/310/routing-in-razor-pages

person Andrew    schedule 01.02.2019
comment
Мне очень нравится информация по этой ссылке. Спасибо, что поделились. Но ваш ответ не говорит мне, как я могу перенаправить код на предыдущую страницу. Или, может быть, я просто не совсем понимаю. - person athomas; 01.02.2019
comment
Вы можете попробовать ответ Брэда, но вам также нужно будет настроить свой метод Get при загрузке этой страницы, чтобы он мог принимать параметр id при перенаправлении на вашу страницу. Попробуйте что-нибудь вроде: public async Task ‹IActionResult› OnGetAsync (int id) {} ​​Вы можете добавить @page {id} в представление cshtml, чтобы, когда вы вернетесь на эту страницу, вы могли сохранить это значение в своем URL-адресе, если захотите повторно сохраните отправку, поскольку вы используете метод публикации OnPostAsync () по умолчанию. - person Andrew; 04.02.2019