Sitecore 8.0(build 3)MVC WFFM Custom Validator无法正常工作

时间:2016-07-09 03:54:41

标签: c# sitecore sitecore8 web-forms-for-marketers

无法进入我在Sitecore 8 MVC Web Form for Marketers表单上构建的自定义验证器。

以下是我用来构建验证器的步骤:

1)我创建了一个C#app(.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)创建了新的验证器:
位置:sitecore / system / Modules / 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 :将MVC添加到标题中 更新2 :在我的代码与https://doc.sitecore.net/web_forms_for_marketers/working_with_actions_and_validations/validations/walkthrough_create_and_assign_a_custom_fieldtype_validator之间的每个代码差异中添加了C#代码。

1 个答案:

答案 0 :(得分:2)

对于WFFM MVC表单,您需要使用验证属性。我用一个例子here写了博客文章。使用的示例也用于文件上载,因此它应该是相关的。它归结为创建一个继承自DynamicValidationBase的属性。您还需要创建一个新字段,只需添加属性 - 您不需要在那里编写新代码。

博客中的代码适用于Sitecore 8.1。 8.0可能会有一些小的差异。