3

この記事の手順に従って基本的なカスタム エディターを作成しましたが、フォーム編集モードに入ろうとすると 404 エラーが発生します。

/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
map dojo.js:15
dojo.declare._createWidgets ウィジェット.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 || '';
        }
    });
});
4

3 に答える 3

0

これが開発ボックスで発生する場合、ソリューションは Visual Studio で Broswer Link を無効にすることです。

ここに画像の説明を入力

http://www.herlitz.nu/2016/09/19/cant-load-the-episerver-edit-gui-in-development-environment/

于 2016-09-19T07:52:07.327 に答える
0

スクリプトが正しくロードされたら、スクリプト ファイルのデバッグ バージョンをデプロイすることをお勧めします。EPiServer CMS クライアント側ファイルのデバッグに進んでダウンロードし、それらをデプロイする方法を説明してください。

圧縮および縮小されたバージョンでは、何が問題なのかを把握するのは非常に困難です。

于 2013-11-13T12:46:45.100 に答える
0

電子メールの検証が必要な場合は、属性を使用できることを認識していますRegularExpressionか?

[RegularExpression(EPiServer.Framework.Validator.EmailRegexString)]  
public virtual string Email { get; set; }
于 2013-11-22T07:58:51.290 に答える