У меня есть простое приложение (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
Я поставил точку останова на действие индекса в MyTicketsController, и мне удалось ударить точку останова, но получив то же сообщение об ошибке. Чтобы устранить эту проблему, я скопировал папку MyTickets в разделе "Виды в области RBA" и вставил ее в общую папку "Views", и она сработала.
Мой вопрос: почему я направляюсь к неправильному представлению? Я знаю, что это имеет какое-то отношение к маршрутизации, и я был бы признателен за понимание этой проблемы. Спасибо
Это мои маршруты:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"RBA_default",
"RBA/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
Ошибка говорит о том, что
MyTickets/Index.cshtml
не существует в корневой папке. Если ваш контроллерMyTickets
находится в области, вам нужно указать область при перенаправлении.Попробуйте добавить имя области при вызове метода перенаправления.