Model view controller Sitecore MVC:将参数传递给占位符
当我们从java平台切换到sitecore时,我对参数有一些疑问。这在jsp中很容易做到,但我找不到sitecore的解决方案。(由外部合作伙伴实施) 在我的cshtml中,我通过占位符函数包括其他元素:@Html.Sitecore().placeholder(“Placholdername”) 作为占位符包含的元素也可以包含其他元素作为占位符 所以问题是:我能把一些参数和占位符一起传递吗? 就像我的父元素有一个特定的变量集,例如“i=5”,我想将此变量传递给作为占位符包含的元素,并将其传递给作为占位符包含在占位符中的元素 比如: A包括B作为占位符并传递“i=5”,B包括C作为占位符并传递“i=5”,因此在C中“i”的值为“5”,因为A中“i”被设置为“5” 在当前的coremedia平台上,我可以简单地使用以下内容:Model view controller Sitecore MVC:将参数传递给占位符,model-view-controller,parameters,sitecore,Model View Controller,Parameters,Sitecore,当我们从java平台切换到sitecore时,我对参数有一些疑问。这在jsp中很容易做到,但我找不到sitecore的解决方案。(由外部合作伙伴实施) 在我的cshtml中,我通过占位符函数包括其他元素:@Html.Sitecore().placeholder(“Placholdername”) 作为占位符包含的元素也可以包含其他元素作为占位符 所以问题是:我能把一些参数和占位符一起传递吗? 就像我的父元素有一个特定的变量集,例如“i=5”,我想将此变量传递给作为占位符包含的元素,并将其传递给作
编辑:
我想要实现的是以下内容:例如,我有以下结构:带有变量I=5的页面框架cshtml,然后包含一个网格作为占位符,并将变量传递给网格。然后网格进行一些数学运算,比如i=i+5(应该等于10),然后包含一个摘要作为占位符,并将新的i=10传递给摘要,以此类推。您应该在模型中设置
i
的值。然后,所有不同的视图或局部视图应继承相同的模型。您可以将参数指定给渲染,但不能指定给占位符。占位符应视为孔。您可以动态地将内容放入其中,但不能为其分配参数。这里有一个讨论:
我可以想出至少两种方法来解决您的问题:
您可以在控制器操作方法中将参数添加到
ViewData
字典中:
public ActionResult MyPage()
{
ContextService.Get().GetCurrent().ViewData.Add("MyKey", "MyValue");
return View();
}
然后,任何视图渲染都可以从ViewData
访问参数:
@{
var value = ViewData["MyKey"].Value;
}
或者,如果正在使用控制器渲染,请添加一些代码以从父页面获取ViewData,并将其添加到当前ViewData实例:
public ActionResult ChildRendering()
{
// Get any ViewData previously added to this ViewContext
var contextViewData = ContextService.Get().GetCurrent().ViewData;
contextViewData.ToList().ForEach(x => ViewData.Add(x.Key, x.Value));
return View();
}
您的ViewData
内容现在将在视图文件中可用
此处将对此进行更详细的讨论:是否从Sitecore检索值,然后将其传递给不同的视图?否,该值在基本cshtml文件中设置,并应传递给所有子元素。我希望实现以下目标:例如,我有以下结构:带有变量I=5的页面框架,然后包含一个网格作为占位符,并将变量传递给网格。网格然后做一些数学运算,比如i=i+5(应该等于10),然后包含一个摘要作为占位符,并将新的i=10传递给摘要,等等……细节:网站上的每个组件都需要知道它在引导网格系统中的宽度。假设页面框架有一个col-8,其中有一个占位符,那么8/12应该传递给我放在占位符中的元素。在这个占位符中,我放入了一个带有两个col-6的网格,这两列中都有占位符,可以放入其他组件。因此网格接收8/12作为父宽度,并应将“8/12*6/12”传递给网格中的组件,以便组件“知道”它们的网站宽度为4/12。如果中间没有网格,组件就会知道它的8/12宽度。你不能根据需要使用CSS来设置组件的样式吗?e、 g.
.col-8.col-6.组件样式
?您需要在C代码中访问这些详细信息吗?