как правильно перенаправить на страницу в asp.netcore - PullRequest
1 голос
/ 19 июня 2019

редактировать: фон на проект.Это был проект, созданный в соответствии с принципами из учебных пособий по доступу к данным с помощью бритвенных страниц https://docs.microsoft.com/en-us/aspnet/core/data/ef-rp/?view=aspnetcore-2.2. Я не делал представления или контроллеры, поэтому в настоящее время у меня нет действий, на которые я мог бы перенаправить.мне нужно добавить папку контроллеров?

Когда я сохраняю изменения в своем редакторе модели subcategories, я хочу вернуться на страницу categories.Обычно, это было бы хорошо с простым RedirectToPage("/index").

, который не работает здесь, потому что мой индекс OnGet использует строковый идентификатор для фильтрации через subcategories (кажется, что явероятно, неправильно, но это работает).Ниже приведено то, что у меня сейчас есть, и оно, очевидно, не работает:

Правка - OnPost:

public async Task<IActionResult> OnPostAsync()
{
    if (!ModelState.IsValid)
    {
        return Page();
    }

    _context.Attach(Subcategory).State = EntityState.Modified;

    try
    {
        await _context.SaveChangesAsync();
    }
    catch (DbUpdateConcurrencyException)
    {
        if (!SubcategoryExists(Subcategory.SubcategoryId))
        {
            return NotFound();
        }
        else
        {
            throw;
        }
    }

    return RedirectToPage("./Index", "?id" , Subcategory.CategoryName);
}

Индекс - OnGet:

public async Task OnGetAsync(string id)
{
    title = id;

    Subcategory = await _context.Subcategory.ToListAsync();

    foreach (Subcategory item in Subcategory.ToList())
    {
        if (item.CategoryName != id)
        {
           Subcategory.Remove(item);
        }
    }

}

Может кто-нибудь сказать мне, как правильно перенаправить OnPost моей страницы редактирования бритвы на OnGet моей страницы индекса бритвы?

Я пытался провести некоторое исследованиена обработчиках, но я не мог найти хорошее понятное определение того, как это сделать.

Ответы [ 2 ]

3 голосов
/ 20 июня 2019

Немного трудно увидеть, где вы подключили материал, поскольку вы только предоставили методы.

Учитывая, что OnGetAsync(string id) если сопоставлено с /index, вы можете использовать что-то вроде:

return RedirectToAction("Index", new { id = Subcategory.CategoryName.ToString() });

Я бы также предложил, чтобы вы вызывали ваши методы так же, как конечная точка. Так что, если OnGetAsync ваша конечная точка индекса. Тогда назовите это Index.

Надеюсь, это поможет вам, иначе вам нужно предоставить мне больше кода.

0 голосов
/ 20 июня 2019

решение проблемы без построения контроллера было в значительной степени тем, что говорила Кристиан Баррнет:

   return RedirectToPage("./Index", new { id = Subcategory.CategoryName.ToString() });

однако, мне все равно, вероятно, следует добавить сюда некоторые контроллеры, чтобы сделать это намного более организованным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...