Ошибка при попытке загрузить пользовательский редактор клиентов
Я выполнил шаги, описанные в этой статье, чтобы создать простой пользовательский редактор, но при попытке войти в режим редактирования форм из
/EPiServer/CMS/1.0.456/ClientResources/dtk/app/editors/EmailTextbox.js
В связанной с документом статье говорится, что EPiServer автоматически добавляет отображение из /ClinetResources/Scripts в app
Пространство имен. Я взял пунт и добавил module.config в корень моего сайта, вот так:
<?xml version="1.0" encoding="utf-8"?>
<module>
<assemblies>
<!-- This adds the Alloy template assembly to the "default module" -->
<add assembly="PropertyTest" />
</assemblies>
<dojoModules>
<!-- Add a mapping from alloy to ~/ClientResources/Scripts to the dojo loader configuration -->
<add name="app" path="Scripts" />
</dojoModules>
</module>
Это исправило 404, но теперь я получаю ошибку типа в консоли при попытке войти в режим форм
TypeError {} dojo.js: 15
(анонимная функция) dojo.js: 15
dojo.Deferred.reject.errback dojo.js: 15
_174 dojo.js: 15
dojo.Deferred._171.then.then dojo.js: 15
dojo.Deferred.when.dojo.when dojo.js: 15
dojo.declare._createInternal widgets.js: 2
(анонимная функция) widgets.js: 2
_388 dojo.js: 15
карта dojo.js: 15
dojo.declare._createWidgets widgets.js: 2
(анонимная функция) widgets.js: 2
_388 dojo.js: 15
_c6 dojo.js: 15
_36 dojo.js: 15
_7a dojo.js: 15
_ee dojo.js: 15
req.injectUrl._109 dojo.js: 15
Почему это ошибка?
Источник моего JS-файла указан в ссылке на статью, но для полноты я включил ее ниже.
define([
// Inherited mixins
"dojo",
"dojo/_base/declare",
"dijit/_Widget",
"dijit/_TemplatedMixin"
], function (
dojo,
declare,
_Widget,
_TemplatedMixin) {
declare("app.editors.EmailTextbox", [_Widget, _TemplatedMixin], {
// templateString: [protected] String
// A string that represents the default widget template.
templateString: '<div> \
<input type="email" data-dojo-attach-point="email" data-dojo-attach-event="onchange:_onChange" /> \
</div>',
postCreate: function () {
// summary:
// Set the value to the textbox after the DOM fragment is created.
// tags:
// protected
this.set('value', this.value);
if (this.intermediateChanges) {
this.connect(this.email, 'onkeydown', this._onIntermediateChange);
this.connect(this.email, 'onkeyup', this._onIntermediateChange);
}
},
focus: function () {
// summary:
// Put focus on this widget.
// tags:
// public
dijit.focus(this.email);
},
isValid: function () {
// summary:
// Indicates whether the current value is valid.
// tags:
// public
var emailRegex = '[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+';
if (!this.required) {
emailRegex = '(' + emailRegex + ')?';
}
var regex = new RegExp('^' + emailRegex + '$');
return regex.test(this.value);
},
onChange: function (value) {
// summary:
// Called when the value in the widget changes.
// tags:
// public callback
},
_onIntermediateChange: function (event) {
// summary:
// Handles the textbox key press events event and populates this to the onChange method.
// tags:
// private
if (this.intermediateChanges) {
this._set('value', event.target.value);
this.onChange(this.value);
}
},
_onChange: function (event) {
// summary:
// Handles the textbox change event and populates this to the onChange method.
// tags:
// private
this._set('value', event.target.value);
this.onChange(this.value);
},
_setValueAttr: function (value) {
// summary:
// Sets the value of the widget to "value" and updates the value displayed in the textbox.
// tags:
// private
this._set('value', value);
this.email.value = this.value || '';
}
});
});
3 ответа
Знаете ли вы, что вы можете просто использовать RegularExpression
атрибут, если вы хотите проверить электронную почту?
[RegularExpression(EPiServer.Framework.Validator.EmailRegexString)]
public virtual string Email { get; set; }
Если ваш скрипт загружен должным образом, рекомендуется развернуть отладочные версии файлов скриптов. Перейдите к разделу "Отладка клиентских файлов EPiServer CMS" для загрузки и инструкций по их развертыванию.
С сжатыми и уменьшенными версиями очень трудно понять, что происходит не так.
Если это происходит в окне разработки, решение состоит в том, чтобы отключить Broswer Link в Visual Studio.
http://www.herlitz.nu/2016/09/19/cant-load-the-episerver-edit-gui-in-development-environment/