我的顶级菜单栏中包含actionlink()列表。其中一个将数据传递给控制器。
int? partCategoryID = Model.SelectedPartCategory == null ? -1 : Model.SelectedPartCategory.PartCategoryID;
@Html.ActionLink("New Part", "NewPart", new { PartCategoryID = partCategoryID })
工作正常。然后我发现动作链接的数量增长得太快了。所以我正在尝试构建一个站点地图。并且视图会将所有actionlink数据传递给局部视图。部分处理所有顶级菜单栏。
在原始视图中(简化):
Dictionary<string, object> actionRouteValueDict = new Dictionary<string, object>();
int? partCategoryID = Model.SelectedPartCategory == null ? -1 : Model.SelectedPartCategory.PartCategoryID;
actionRouteValueDict.Add("NewPart", new { PartCategoryID = partCategoryID });
@Html.Partial("TopNavBar", new ViewDataDictionary { {"Routes", actionRouteValueDict} });
在局部视图中,它是“做同样的事情”:
Dictionary<string, object> actionRouteValueDict = (Dictionary<string, object>)ViewData["Routes"];
@Html.ActionLink("New Part", "NewPart", actionRouteValueDict["NewPart"])
但不知何故,新@Html.Action
无法正确处理对象,我可以调试并看到actionRouteValueDict["NewPart"]
仍然正确({PartCategory = -1})
,但ActionLink
已翻译为{{1} }}。
我知道我可以传递比对象更安全的东西,比如html字符串。但我想知道我在这里做错了什么。以及如何通过视图传递对象来解决。