标签: episerver

TDD与Episerver

抽象episerver基础设施以便于测试的最佳方法是什么?

.net tdd episerver

6
推荐指数
2
解决办法
844
查看次数

EPiServer 7 - 基于字典的自定义属性类型

我一直在加速EPiServer 7 MVC并且已经通过了Joel Abrahamsson的Alloy MVC模板.在看了自定义预览控制器之后,它预览了4种不同"尺寸"的块,它可以渲染,我有一个想法是创建一个特定于某个块"大小"的属性,以便标题文本,例如,可以根据块渲染的"大小"显示不同的内容.从本质上讲,这将是一个字典,其中Key是'size',Value将包含字符串内容.

有没有人制作过这样的词典属性?

我已经尝试了一些方法并且每个方法都遇到了问题:

  1. 自定义属性类型/自定义值类型.按照创建自定义属性类型的示例(http://joelabrahamsson.com/creating-a-custom-episerver-property-with-a-custom-class-as-value/),我创建了一个自定义属性类型(PropertyDicitionaryString) )和自定义值类型(DictionaryString).我可以通过实现显示模板来显示值,该显示模板接收具有大小的标签,然后将Model.MyDictionaryString [ViewData ["Tag"]呈现为字符串].但是,我还没有弄清楚如何让内联编辑工作,因为不支持调用@ Html.EditAttributes(x => x.MyDictionaryString [ViewData ["Tag"] as string]); 该方法不支持lambda表达式中的索引或方法调用). 有谁知道如何创建这样的内联编辑器?

  2. 自定义属性类型/基元类型.我重写了上面的自定义属性类型,让我们调用它(PropertyDictionaryStringAsPrimitive),以便Value属性返回一个字符串.这允许我将我的模型定义为:

    [BackingType(typeof(PropertyDictionaryStringAsPrimitive)] public virtual string SizeSpecificString{get;set;}

    当调用Value方法以确保它返回正确的值时,我不得不破解PropertyDictionaryStringAsPrimitive以便在当前渲染上下文中接收'size'.我能够通过实现自定义ContentDataInterceptor来实现这一点,该ContentDataInterceptor查找对PropertyDictionaryStringAsPrimitive.Value的调用并适当地设置Key.所以现在显示的值工作正常,但内联编辑也不太有效.当进行ajax保存调用时,我需要添加一些状态信息,这样我就可以告诉PropertyDictionaryStringAsPrimitive使用哪个Key来保存更改. 任何人都知道如何在内联编辑ajax保存请求期间传回其他状态信息?

  3. 我看了看[CultureSpecific]属性.如果我可以使用与CultureSpecific类似的机制来保持值的"大小"特定实例,那将会很有趣.在反编译器中花费一些时间试图解决hwo CultureSpecific的神奇之处,我将属性跟踪到CotnentDataAttributeScanningAssigner.AssignValuesToPropertyDefinition,将PropertyDefinitionModel.CultureSpecific标志设置为true,PropertyDefinitionSynchronizer.CreatePropertyDefintion用于将PropertyDefintiionModel.CultureSpecificValue设置为Enum.但是我找不到这个设置如何影响加载哪个值. 任何人都知道如何使用属性级别属性动态更改值?

episerver episerver-7

6
推荐指数
1
解决办法
1298
查看次数

如何以编程方式检索EPi Server网站的所有已启用语言的列表?

我只想获得EPi Server网站所有已启用语言的列表(在管理模式下的"管理网站语言"面板中启用),并且最好还能够检索标志图标的路径,当然还有文化名称/ ID.

我正在使用EPiServer 6 R2,所以如果代码适用于该版本,那将是可爱的.把我指向正确的方向也会很棒.

c# culture localization episerver

6
推荐指数
2
解决办法
4002
查看次数

索引属性DDS EPiServer的最佳方法是什么

在映射到DDS的现有对象上添加索引的最佳方法是什么?已存储在数据库中的数十万个对象.

是否只是添加[EPiServerDataIndex] atttribute到我现有的类,重新编译和重新部署站点?

episerver episerver-6-r2

6
推荐指数
1
解决办法
263
查看次数

IContentRepository与EPiServer中的IContentLoader

在EPiServer 7中,我遇到了两个不同的接口来获取EPiServer存储库 - IContentRepository和IContentLoader.

例:

 var repo = EPiServer.ServiceLocation.ServiceLocator.Current.GetInstance<IContentRepository>();
Run Code Online (Sandbox Code Playgroud)

和:

var repo = EPiServer.ServiceLocation.ServiceLocator.Current.GetInstance<IContentLoader>();
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释何时在另一个面前使用一个?提前致谢.

episerver

6
推荐指数
1
解决办法
1309
查看次数

带问号的钻石

当我显示数据库中的数据时,我的 HTML 属性中会出现这些带有问号的小菱形。我正在使用 EPiServer 和一些自定义属性。

\n\n

这是我收集到的信息

\n\n
    \n
  • 我将数据保存为 XML 文档,因为我使用需要多个定义值的自定义 EPiServer 属性。这是保存为 UTF8 的。

  • \n
  • 只有元素标签中的属性有这个问题,比如align=left 变成align=\xef\xbf\xbdleft\xef\xbf\xbd。那里没有“字符,但我还是得到了钻石。

  • \n
  • 如果我在元素外部使用 " ,它会正常工作并显示。

  • \n
\n\n

有什么线索吗?

\n

encoding attributes episerver

5
推荐指数
1
解决办法
1万
查看次数

在EPiServer中的TinyMCE中允许自定义HTML属性

仅限EPiServer:

我们的客户正在尝试在TinyMCE编辑器中为div标签添加自定义属性 - 它们切换到HTML模式,进行更改并保存页面.然后删除属性.像这样清洗HTML是TinyMCE的标准行为,并且可以将其配置为允许自定义标记属性.

我的问题是如何在EPiServer中配置TinyMCE 以允许自定义HTML属性?我没有看到我能够在哪里挂钩TinyMCE的初始化.并且将div添加到episerver.config中的"安全"标记列表中也看不到任何工作(请参阅uiSafeHtmlTags).

例:

<div class="fb-like" data-href="http://oursite" data-send="false"></div>
Run Code Online (Sandbox Code Playgroud)

变得公正

<div class="fb-like"></div>
Run Code Online (Sandbox Code Playgroud)

从TinyMCE文档中,了解如何向标记添加自定义属性:http://www.tinymce.com/wiki.php/Configuration: extended_valid_elements

asp.net tinymce episerver

5
推荐指数
2
解决办法
6941
查看次数

获取产品 Episerver Commerce

按照本教程http://world.episerver.com/documentation/commerce/get-started-with-commerce/3--creating-a-start-page/开始使用 episerver 商务。将 url 写入特定问题时,它工作正常。

但是说我有以下树。

目录根 -> testcatalog -> testlevel -> testproduct 1 和 2

在 testevel 上时(如果查看教程,有模型 MyNode),我如何获得所有子“产品”,testproduct 1 和 2?似乎有 100 种方法可以做到这一点。

使用最新的外延服务器和外延服务器商务 (9)。

c# asp.net-mvc episerver episerver-commerce

5
推荐指数
1
解决办法
1361
查看次数

在发布时停止 EPiServer 清除输出缓存

这不是我见过的问题,通常是“EPiServer 未清除输出缓存”。我正在努力实现相反的目标。每次发布一个页面时,整个缓存都会被删除,并且由于客户端每天发布数次,这令人沮丧。

我正在使用该[ContentOutputCache]属性并尝试httpCacheVaryByCustom在 EPiServer 中实现带有随附计划任务的规则,以便在我们决定将更新捆绑在一起并在预定时间失效时使缓存失效。

我已经测试了这条规则,它的工作原理是:

public override string GetVaryByCustomString(HttpContext context, string custom)
Run Code Online (Sandbox Code Playgroud)

我的印象是,通过使用这种类型的缓存规则,它会在发布/上传媒体时停止 EPiServer 转储我的缓存。

难道没有办法阻止这种情况发生吗?

我通过使用具有相同自定义字符串规则的标准 [OutputCache] 取得了成功,唯一的问题是编辑器将始终看到他们正在编辑的页面的缓存版本。

我在 EPiServer 的 web.config 中的应用程序设置是:

<applicationSettings globalErrorHandling="Off" operationCompatibility="DynamicProperties" uiSafeHtmlTags="b,i,u,br,em,strong,p,a,img,ol,ul,li" disableVersionDeletion="false" 
                     httpCacheability="Public" uiEditorCssPaths="~/assets/css/styles.css, ~/assets/css/editor.css" urlRebaseKind="ToRootRelative" 
                     pageUseBrowserLanguagePreferences="false" uiShowGlobalizationUserInterface="false" subscriptionHandler="EPiServer.Personalization.SubscriptionMail,EPiServer" 
                     uiMaxVersions="20" pageValidateTemplate="false" utilUrl="~/util/" 
                     uiUrl="~/EPiServer/CMS/" httpCacheExpiration="01:00:00"  httpCacheVaryByCustom="invalidateSiteCache" />
Run Code Online (Sandbox Code Playgroud)

caching outputcache episerver

5
推荐指数
1
解决办法
1062
查看次数

更改 System.Web.Security.MembershipProvider (EPiServer) 中密码策略验证的错误消息

这是我的情况。

我正在使用 EPiServer 9 并且我已经配置了一个 SqlServerMembershipProvider 如下:

<add name="SqlServerMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                     connectionStringName="EPiServerXYZ"
                     enablePasswordRetrieval="false"
                     enablePasswordReset="true"
                     requiresQuestionAndAnswer="false"
                     requiresUniqueEmail="false"
                     maxInvalidPasswordAttempts="5"
                     minRequiredPasswordLength="8"
                     minRequiredNonalphanumericCharacters="1"
                     passwordAttemptWindow="10"
                     applicationName="/"
                     passwordStrengthRegularExpression="^.*(?=.{8,})(?=.*\d)(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[^\w\d\s]).*$" />
Run Code Online (Sandbox Code Playgroud)

一切正常,验证和不同的场景。

我们的问题是会员提供者显示的错误消息是通过使用配置创建的,它最终给出了用户不友好的消息,例如:

  • '无效密码,最小长度:8,最小非字母数字字符:1'
  • 'newPassword' 中的非字母数字字符需要大于或等于 '1'。参数名称:newPassword'
  • '参数'newPassword' 与配置文件中指定的正则表达式不匹配。参数名称:newPassword'

在episerver中创建用户时的错误消息密码验证

我很想设置一个自定义错误消息,它真正向用户解释了我们在用于验证密码的正则表达式中的所有要求。

到目前为止,我可以考虑这样做的唯一方法是实现/扩展我们正在使用的当前提供程序,以便在验证出现问题时设置自定义错误消息,但我想可能有另一种更好/更简单的方法来做到这一点.

提前致谢!

.net asp.net security asp.net-membership episerver

5
推荐指数
1
解决办法
1038
查看次数