使按钮文本A / B可测试 - Sitecore MVC

时间:2014-08-10 00:13:01

标签: asp.net-mvc-4 sitecore

我有一个带按钮的MVC / angularJS页面,该按钮需要调用代码来处理当前页面并继续执行应用程序中的下一步,但是他们希望按钮文本是a / b可测试的,具有不同的变化。我是Sitecore的新手,所以我很难知道最好的做事方式。

我想过一个简单的文本组件/模板只有一行文本属性,但是如果我将它添加到页面模板那么它似乎不是a / b可测试的,因为当你点击测试选项时它要求您选择内容。而内容是文本,他们作为页面模板的一部分输入。

我知道制作a / b可测试内容的唯一方法,以便他们可以在页面编辑器中单击页面并选择选择内容/添加测试变体。我不会将按钮添加到占位符,因为它需要调用特定的角度代码并始终在那里,但是我应该添加文本所在的占位符吗?在那里定义占位符,定义渲染,创建局部视图,定义占位符设置以将其限制为简单文本组件,然后希望他们不要尝试向占位符添加多个项目似乎有点过分。

3 个答案:

答案 0 :(得分:1)

我会创建一个单独的模板(即使用按钮的文本字段)来表示您的表单,然后创建两个测试变体项作为您的页面的子项,或者可以将它们放在您的页面之外的共享组件文件夹中'家'节点

修改

为了将表单组件移动到新的A / B可测试组件中,您需要在Sitecore中创建一个新的Sublayout,然后为子布局创建一个新的ascx控件。在此控件的Page_Load处理程序中,您将使用以下代码检索子布局的数据源:

//assume you have a button on your usercontrol called btnSubmit
//assume your template has a single-line text field called 'SubmitButtonText'
Guid dataSourceId;
Sitecore.Data.Items.Item dataSource;
if (Guid.TryParse(sublayout.DataSource, out dataSourceId))
{
  dataSource = Sitecore.Context.Database.GetItem(new ID(dataSourceId));
  btnSubmit.Text = dataSource["SubmitButtonText"]; 
}

答案 1 :(得分:0)

所以我创建了一个新模板,它只有一行文本作为字段,并在共享数据节点中添加了一个内容项。

在我的部分观点中:

@model Digital.Models.SimpleTextItem
<button ....>
<span class="hidden-xs">@Model.SimpleText_Value<br></span>
</button>

在我的主页面中 - 我试图静态绑定它,以便它们只能更改内容而不是向占位符添加新控件,但只有在我在此页面中指定数据源时才有效。

使用渲染,并在页面布局中将渲染添加到具有指定数据源的占位符:

@Html.Sitecore().Placeholder("PremiumQuoteApplyNowPlaceHolder")

不确定这是否是最好的方法,但它实现了我所需要的。

答案 2 :(得分:0)

A / B测试只能应用于控件(XSLT渲染,子布局,动作控制器渲染,视图渲染)。如果您只想为按钮进行A / B测试,那么您应该像以前那样为它创建额外的控制。

MVC的技术细节:A / B测试应用于处理渲染参数的mvc.customizeRendering管道。此管道在渲染级别上运行。这意味着您无法在没有自定义的情况下为特定字段(按钮)创建A / B测试。