某些机构尝试Spark View Engine用asp.net mvc 2预览2?我有一个区域的问题。asp.net mvc 2预览2和星火
它看起来很喜欢火花引擎外观**。* spark *文件只在Views文件夹内而不是Areas文件夹中。
我的问题是:
某人有信息如何添加呢?
某些机构尝试Spark View Engine用asp.net mvc 2预览2?我有一个区域的问题。asp.net mvc 2预览2和星火
它看起来很喜欢火花引擎外观**。* spark *文件只在Views文件夹内而不是Areas文件夹中。
我的问题是:
某人有信息如何添加呢?
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;
}
}
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"
对象。
我看到mVc2在dataToken字典中放置了区域变量。它为什么spark找不到它 – Sasha 2009-12-03 11:12:45
在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
我正在查看代码。上面的代码现在正在为我工作,运行在asp.net mvc 2测试版(截至今天的最新版本)上。 – midas06 2009-12-03 20:04:26