2016-07-09 8 views
1

私は、マーケティング担当者のためのSitecore 8 MVC Webフォームで構築したカスタムバリデーターに入りません。ここで
Sitecore 8.0(ビルド3)MVC WFFMカスタムバリデータが動作しません

は私がバリデータを構築するために使用私の手順です。

1)私はC#のアプリ(.NET 4.5)を作成し、ファイルの検証のためのDLLをビルドします。ビルドし、.DLLをBinディレクトリにコピーしました。私たちが持っているSitecore 6.6サイトではうまく動作し、sitecore 8.0サイトではうまく動作しません。

ここに検証コードがあります(テストのためにargs.IsValidをfalseに設定するように変更しました)。

namespace SitecoreUtilities.UploadFile 
{ 
    public class RestrictSize : FormCustomValidator 
    { 
     public int MaxFileSize 
     { 
      get 
      { 
       int maxSize; 
       if (int.TryParse(base.classAttributes["MaxFileSize"], out maxSize)) 
       { 
        return maxSize; 
       } 
       return 0; 
      } 
      set 
      { 
       base.classAttributes["MaxFileSize"] = value.ToString(); 
      } 
     } 

     public RestrictSize() 
     { 
      this.ServerValidate += this.OnSizeValidate; 
     } 

     private void OnSizeValidate(object source, ServerValidateEventArgs args) 
     { 
      FileUpload fileUpload = FindControl(ControlToValidate) as FileUpload; 
      if (!fileUpload.HasFile) 
      { 
       args.IsValid=true; 
       return; 
      } 
      args.IsValid = fileUpload.PostedFile.ContentLength <= MaxFileSize; 
      args.IsValid = false; // TESTING to confirm getting in here 
     } 
    } 
} 

2)新しいバリデータ(複数可)を作成した:
場所:マーケティング/設定のサイトコア/システム/モジュール/ Webフォーム/検証/するFileUpload/AllowedFileSize

  • アセンブリ:SitecoreUtilities
  • クラス:SitecoreUtilities.UploadFile.RestrictSize
  • MVCタイプ:ブランク
  • バリデータの表示:ダイナミック
  • クライアントスクリプトを有効にするには:
  • パラメータをチェックする:私は、実際のアイテムの上に置い空として
  • ローカライズされたパラメータ:
  • 内部制御:チェック

3)を追加しましたバリデータをフィールドタイプ/単純型/ファイルアップロード項目へ

enter image description here

4)フォームフィールドにファイルのアップロードを追加しました:公開し、

enter image description here

5)保存..サイト上で作業することはできません。

私は自分のマシンにIIS 7.5でlocal.test.orgサイトをセットアップし、Visual Studioのプロジェクトに入り、W3Wpに接続しましたが、アプリケーションには入りませんでした。

私はこの展開の手順を逃した場合は助言してください。

アップデート1:私のコードとhttps://doc.sitecore.net/web_forms_for_marketers/working_with_actions_and_validations/validations/walkthrough_create_and_assign_a_custom_fieldtype_validator間のコード差あたりのC#のコードを追加しました:タイトル
アップデート2にMVCを追加しました。

+0

フォームはMVCフォームですか? – Gatogordo

+0

あなたのコードがv6で動作する場合、v8で動作しない可能性があります.wffmのバージョン間で変更されたものがいくつかあります... https://doc.sitecore.net/web_forms_for_marketers/working_with_actions_and_validations/validations/walkthrough_create_and_assign_a_custom_fieldtype_validatorをチェックして、それはあなたのコードとセットアップに準拠していますか? – Gatogordo

+0

Thx Gatogordoが応答しました。 1)はいMVC(私は主語を更新しました)。バリデーターにそのフィールドを空白のままにしておいた場合は、空であるため他のバリデーターをモデル化しただけです。 2)そのリンクを送信していただきありがとうございます。私はちょうど強制的なargs.IsValidをfalseに、まだ編集を押すことではなく、コードにいくつかの調整を加えました。 – DanO

答えて

2

WFFM MVCフォームでは、検証属性を操作する必要があります。私はhereという例のブログ投稿を書いた。使用されている例は、ファイルアップロードのためのものでもあります。それはDynamicValidationBaseから継承された属性の作成に帰着します。属性を追加するだけで新しいフィールドを作成する必要があります。そこに新しいコードを書く必要はありません。

ブログのコードはSitecore 8.1用です。 8.0との若干の相違があるかもしれません。

+0

Thx Gatogordo、これはソリューションは8.1で動作しますが、私はSitecore.Forms.Mvc.ViewModels.FieldsがSitecore.Forms.Mvc 8.0.0 .dllには表示されません。メッセージ:Sitecore.Forms.Mvc、Version = 8.0.0.0、Culture = neutralから 'Sitecore.Forms.Mvc.ViewModels.Fields.FileUploadField'タイプを読み込めませんでした。 、PublicKeyToken = null 'です。 – DanO

+0

8.0では、それらは 'Sitecore.Forms.Mvc.Models.Fields'にあります – Gatogordo

+0

IViewModelがどのような名前空間になっているか考えてください。型または名前空間の名前 'IViewModel'が見つかりませんでした(usingディレクティブまたはアセンブリ参照?)..また、あなたがこれを見つけるための最良の方法を知っていれば、共有してください。 – DanO

関連する問題