Проблема с маршрутизацией: неверное представление - PullRequest
0 голосов
/ 05 июня 2018

У меня есть простое приложение (http://myurl.com), и когда я набираю URL-адрес в адресной строке, меня перенаправляют на http://myurl.com/RBA/Login.

    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl = null)
{
    if (ModelState.IsValid)
    {
        try
        {
            if (!loginSuccessful)
            {
                ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                return RedirectToAction("Index", "Login");
            }
            else 
            {
                return RedirectToAction("Index", "MyTickets");
            }
        }
        catch (Exception ex)
        {
            log.Error(ex);
            ViewBag.Message = "An error occurred";
            throw;
        }
    }

    return View(model);
}

Однако после входа в приложениеи когда я набираю http://myurl.com, я получаю страницу ошибки со следующим сообщением:

The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/MyTickets/Index.cshtml
~/Views/MyTickets/Index.vbhtml
~/Views/Shared/Index.cshtml
~/Views/Shared/Index.vbhtml

Я ставлю точку останова на действие Index в MyTicketsController, и я могу достичь своей точки останова, но получаю то же самоеСообщение об ошибке. Чтобы устранить эту проблему, я скопировал папку MyTickets в области Views в области RBA и вставил ее в общую папку Views, и это сработало.

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

Это мои маршруты:

public override void RegisterArea(AreaRegistrationContext context) 
{
    context.MapRoute(
        "RBA_default",
        "RBA/{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional }
    );
}

1 Ответ

0 голосов
/ 16 июня 2018

Ошибка говорит о том, что MyTickets/Index.cshtml не существует в корневой папке просмотра.Если ваш MyTickets контроллер находится в области, вам нужно указать область при перенаправлении.

Попробуйте добавить имя области при вызове метода перенаправления.

return RedirectToAction("Index", "MyTickets", new { area = "YourArea" });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...