无法进入我在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
3)在字段类型/简单类型/文件上载项目中添加了验证器
4)将文件上传添加到表单字段:
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#代码。
答案 0 :(得分:2)
对于WFFM MVC表单,您需要使用验证属性。我用一个例子here写了博客文章。使用的示例也用于文件上载,因此它应该是相关的。它归结为创建一个继承自DynamicValidationBase
的属性。您还需要创建一个新字段,只需添加属性 - 您不需要在那里编写新代码。
博客中的代码适用于Sitecore 8.1。 8.0可能会有一些小的差异。