2009-10-19 69 views
3

某些机构尝试Spark View Engine用asp.net mvc 2预览2?我有一个区域的问题。asp.net mvc 2预览2和星火

它看起来很喜欢火花引擎外观**。* spark *文件只在Views文件夹内而不是Areas文件夹中。

我的问题是:

某人有信息如何添加呢?

回答

2

Spark不会自动检查当前版本中的区域视图位置。如果你愿意改变源代码(我假设你是如果你正在做mvc 2的东西),这里是修复:

你必须修改文件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,这意味着您必须更改此行: context.RouteData.Values.TryGetValue(“area”,out value) to this: context.RouteData.DataTokens。 TryGetValue(“area”,out value) – Sasha 2009-12-03 11:15:58

+0

我正在查看代码。上面的代码现在正在为我工​​作,运行在asp.net mvc 2测试版(截至今天的最新版本)上。 – midas06 2009-12-03 20:04:26

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在dataToken字典中放置了区域变量。它为什么spark找不到它 – Sasha 2009-12-03 11:12:45