2009-10-19 2 views
3

Кузов проверен Spark View Engine с asp.net mvc 2 Предварительный просмотр 2?asp.net mvc 2 preview 2 and Spark

У меня проблема с ОБЛАСТЬ.

Похоже на то, что искровой двигатель выглядит **. Искры * файлы внутри папок Views только вместо папки Areas дополнительно.

Мой вопрос:

Кто-то информация, как добавить его?

ответ

2

Spark не будет автоматически проверять местоположение видов в текущей версии. Если вы хотите изменить источник (который я предполагаю, что вы, если вы делаете mvc 2 stuff), вот исправление:

Вы должны изменить файл src \ Spark.Web.Mvc2 \ Descriptors \ AreaDescriptorFilter.cs так, что он читает, как показано ниже (изменения выделены **):

Примечание: у меня нет машины я это сделал со мною, так что косые в строке формата, возможно, потребуется быть косой чертой.

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

Это подход, который я сделал с тех пор, как я хотел как можно меньше изменить источник искры.

public class AreaDescriptorFilter : DescriptorFilterBase 
{ 
    **private const string areaPathFormatString = "~\\Areas\\{0}\\Views";** 
    public override void ExtraParameters(ControllerContext context, IDictionary<string, object> extra) 
    { 
     object value; 
     if (context.RouteData.Values.TryGetValue("area", out value)) 
      extra["area"] = value; 
    } 

    public override IEnumerable<string> PotentialLocations(IEnumerable<string> locations, IDictionary<string, object> extra) 
    { 
     string areaName; 

     return TryGetString(extra, "area", out areaName) 
        **? locations.Select(x => Path.Combine(string.Format(areaPathFormatString,areaName), x)).Concat(locations)** 
        : locations; 
    } 
} 
+0

в области перемещения MVC2 в DataTokens, это означает, что u должен изменить эту строку: context.RouteData.Values.TryGetValue («area», out value) : context.RouteData.DataTokens. TryGetValue ("area", out value) – Sasha

+0

Я смотрю код прямо сейчас. Код выше работает для меня прямо сейчас, работая на asp.net mvc 2 beta (последняя версия на сегодняшний день). – midas06

1

Spark ищет ограничение или значение по умолчанию для ключа «область» в маршруте для определения местоположения вида. MVC поддержка 2 площади не добавляет это по умолчанию, вы должны сделать это при объявлении вашей области:

public class AdminRoutes : AreaRegistration 
{ 
    public override string AreaName 
    { 
     get { return "admin"; } 
    } 

    public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "admin_default", 
      "Admin/{controller}/{action}/{id}", 
      new { controller = "Dashboard", action = "Index", id = "", area = "admin" }, 
      new [] { "MyProject.Areas.Admin.Controllers" }); 
    } 
} 

Обратите внимание на area = "admin" внутри по умолчанию объекта.

+0

Я видел это в переменной mvc2 переменной переменной в словаре данных словаря. это почему искру не может найти его – Sasha

Смежные вопросы