Возврат PartialView в MVC3 Область не ищет в области - PullRequest
1 голос
/ 12 ноября 2010

Я работаю над проектом ASP.Net MVC 3 RC.У меня есть одна область под названием Водители.У меня есть действие LoadPartial () в контроллере в области драйверов, которое возвращает PartialView (строка, объект);Когда это возвращается, на моей веб-странице появляется сообщение об ошибке: «Частичное представление PublicAttendanceCode не найдено».Он искал следующие местоположения:

~/Views/AttendanceEvent/PublicAttendanceCode.aspx
~/Views/AttendanceEvent/PublicAttendanceCode.ascx
~/Views/Shared/PublicAttendanceCode.aspx
~/Views/Shared/PublicAttendanceCode.ascx
~/Views/AttendanceEvent/PublicAttendanceCode.cshtml
~/Views/AttendanceEvent/PublicAttendanceCode.vbhtml
~/Views/Shared/PublicAttendanceCode.cshtml
~/Views/Shared/PublicAttendanceCode.vbhtml

Почему он не выполняет поиск в области драйверов?

У меня есть следующие довольно простые маршруты в Global.asax.cs:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home",
              action = "Index",
              id = UrlParameter.Optional  // Parameter defaults
            }
    );
}

И в DriversAreaRegistration.cs

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "Drivers_default",
        "Drivers/{controller}/{action}/{id}",
        new { action = "RequestLeave", id = UrlParameter.Optional }
    );
}

Чего мне не хватает, чтобы он выглядел в области драйверов для частичного?

Ответы [ 4 ]

2 голосов
/ 17 января 2011

Как вы предоставляете имя области для метода PartialView ()?Я думаю, что вы должны передать его в новом {area = "Drivers"} в качестве параметра routeValues.

2 голосов
/ 13 ноября 2010

Способ, которым механизмы представления MVC знают область, в которую они должны смотреть, основан на маршруте , который использовался для обработки запроса.

В случае действия контроллерачто у вас есть, вы уверены, что запрос был обработан определением маршрута области, или возможно, что запрос был обработан более общим маршрутом, который вы определили в global.asax?

1 голос
/ 20 января 2014

Это тоже работает:

return PartialView("~/Areas/Admin/Views/Shared/MyView.cshtml", model);
1 голос
/ 16 февраля 2012

Существует только четыре перегрузки метода PartialView, и похоже, что ни один из них не принимает routeValues в качестве параметра.

Я решил эту проблему следующим образом:*

return PartialView(
    VirtualPathUtility.ToAbsolute("~/Areas/MyArea/Views/Shared/MyView.cshtml"));

Работает, но выглядит некрасиво.

...