我正在使用sitecore和mvc开发多步骤表单。在每个步骤中我都需要sitecore上下文,我正在使用控制器渲染。现在作为sitecore工作,我需要为我的渲染添加控制器名称和操作,所以基本上我只能为每个渲染使用一个控制器操作。
在我的情况下,我在多步骤表单中为每个步骤使用了相同的操作名称但不同的参数类型。理想情况下,我希望在多步骤表单中为每个步骤设置不同的控制器操作名称。谁能帮帮我呢?
由于
答案 0 :(得分:1)
我不确定我完全理解这个问题。您是否尝试使用单个.cshtml文件进行所有步骤?如果是这样,您可以为Sitecore CMS中的同一视图定义多个控制器渲染。在渲染部分中,将多步骤表单的每个步骤定义为单独的控制器渲染。您可以为每个控制器使用相同的控制器,但指定不同的操作。
在控制器逻辑中,您可以指定返回相同的View,但将不同的属性传递给Model对象。
例如,你可能会这样做:
public ActionResult Step2(){
var context = RenderingContext.Current.PageContext.Item;
var otherParams = "SomethingForStep2";
var model = new MyModelObject(context, otherParams);
var view = this.View("Path/To/My/View", model);
return view;
}
在上面的示例中,我假设您已经定义了某种Model对象,您可以在其中传入所需的任何参数,以便您的视图可以使用它来呈现。
如果您使用不同的视图,那么您将只为每个操作返回一个不同的视图,再次将模型传递给视图以帮助它呈现。
答案 1 :(得分:0)
如果您使用的是AJAX(我会假设),我建议您使用以下内容:
NextStepUrl
)NextStepUrl
属性,则使用此属性为表单的下一步执行AJAX GET请求这种方法意味着在每个GET请求中,您将拥有一个有效的RenderingContext,可以从中读取控制器渲染的数据源。
如果你需要在HttpPost动作期间拥有RenderingContext,你可以简单地包含一个带有数据源项ID的隐藏字段,并在HttpPost动作中读取它,或者你可以使用一些custom model binding来实现相同的功能事情稍微清洁一点。