2009-10-19 97 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