Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions Sdl.Web.Common/Models/MvcData.cs
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
using System.Collections.Generic;
using System.Linq;
using Sdl.Web.Common.Configuration;

using System;

namespace Sdl.Web.Common.Models
{
/// <summary>
Expand Down Expand Up @@ -132,7 +133,8 @@ public override int GetHashCode()
public override string ToString()
{
// TODO: what about the other properties?
return string.Format("{0}:{1}:{2}", AreaName, ControllerName, ViewName);
var routeValues = RouteValues != null ? String.Join(",", RouteValues.Select(v => String.Format("{0}:{1}", v.Key, v.Value))) : "";
return string.Format("{0}:{1}:{2}:[{3}]", AreaName, ControllerName, ViewName, routeValues);
}
#endregion

Expand Down
17 changes: 14 additions & 3 deletions Sdl.Web.Mvc/Html/HtmlHelperExtensions.cs
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -381,9 +381,20 @@ public static MvcHtmlString DxaRegion(this HtmlHelper htmlHelper, RegionModel re
MvcData mvcData = region.MvcData;
string actionName = mvcData.ActionName ?? SiteConfiguration.GetRegionAction();
string controllerName = mvcData.ControllerName ?? SiteConfiguration.GetRegionController();
string controllerAreaName = mvcData.ControllerAreaName ?? SiteConfiguration.GetDefaultModuleName();

MvcHtmlString result = htmlHelper.Action(actionName, controllerName, new { Region = region, containerSize = containerSize, area = controllerAreaName });
string controllerAreaName = mvcData.ControllerAreaName ?? SiteConfiguration.GetDefaultModuleName();

RouteValueDictionary parameters = new RouteValueDictionary();
parameters["containerSize"] = containerSize;
parameters["region"] = region;
parameters["area"] = controllerAreaName;
if (mvcData.RouteValues != null)
{
foreach (string key in mvcData.RouteValues.Keys)
{
parameters[key] = mvcData.RouteValues[key];
}
}
MvcHtmlString result = htmlHelper.Action(actionName, controllerName, parameters);

if (WebRequestContext.IsPreview)
{
Expand Down
37 changes: 22 additions & 15 deletions Sdl.Web.Tridion/Mapping/DefaultModelBuilder.cs
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -990,7 +990,7 @@ private static MvcData GetRegionMvcData(IComponentPresentation cp)
regionMvcData.RegionName = regionNameField.Value;
}
}

regionMvcData.RouteValues = GetRouteValues(ct,"regionRouteValues");
return regionMvcData;
}

Expand Down Expand Up @@ -1167,22 +1167,29 @@ private static MvcData GetMvcData(IComponentPresentation cp)
{
mvcData.ActionName = ct.MetadataFields["action"].Value;
}
if (ct.MetadataFields.ContainsKey("routeValues"))
{
string[] routeValues = ct.MetadataFields["routeValues"].Value.Split(',');
mvcData.RouteValues = new Dictionary<string, string>(routeValues.Length);
foreach (string routeValue in routeValues)
{
string[] routeValueParts = routeValue.Trim().Split(':');
if (routeValueParts.Length > 1 && !mvcData.RouteValues.ContainsKey(routeValueParts[0]))
{
mvcData.RouteValues.Add(routeValueParts[0], routeValueParts[1]);
}
}
}
mvcData.RouteValues = GetRouteValues(ct);
}

return mvcData;
}
}

private static Dictionary<string, string> GetRouteValues(IComponentTemplate ct, String metaFieldName = "routeValues")
{
Dictionary<string, string> routeValues = null;
if (ct.MetadataFields.ContainsKey(metaFieldName))
{
string[] routeValuesString = ct.MetadataFields[metaFieldName].Value.Split(',');
routeValues = new Dictionary<string, string>(routeValuesString.Length);
foreach (string routeValue in routeValuesString)
{
string[] routeValueParts = routeValue.Trim().Split(':');
if (routeValueParts.Length > 1 && !routeValues.ContainsKey(routeValueParts[0]))
{
routeValues.Add(routeValueParts[0], routeValueParts[1]);
}
}
}
return routeValues;
}
}
}