ASP.NET DynamicData验证自定义图像FieldTemplate

时间:2012-01-13 15:08:24

标签: asp.net scaffold asp.net-dynamic-data

我已经创建了一个可以正常使用的自定义图像字段模板。我决定为图像大小创建某种验证,因此我创建了一个自定义验证属性。这是代码:

public class ImageSizeValidator : ValidationAttribute
{
    public long MaxSize { get; set; }
    public long MinSize { get; set; }

    public override bool IsValid(object value)
    {
        if (value == null)
            return true;

        byte[] image = (byte[]) value;

        if (image.Length / 1024L > MaxSize || image.Length / 1024L < MinSize)
            return false;

        return true;
    }
}

这是我的FieldTemplate Image_Edit.ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Image_Edit.ascx.cs" Inherits="RastinArgham.CRM.Web.DynamicData.FieldTemplates.Image_Edit" %>

<asp:FileUpload ID="FileUpload1" runat="server" OnDataBinding="FileUpload1DataBinding" />

<asp:RequiredFieldValidator runat="server" ID="RequiredFieldValidator1" CssClass="DDControl DDValidator" ControlToValidate="FileUpload1" Display="Static" Enabled="false" />
<asp:DynamicValidator runat="server" ID="DynamicValidator1" CssClass="DDControl DDValidator" ControlToValidate="FileUpload1" Display="Static" />

这里是Image_Edit.ascx.cs:

public partial class Image_Edit : System.Web.DynamicData.FieldTemplateUserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        SetUpValidator(RequiredFieldValidator1);
        SetUpValidator(DynamicValidator1);
    }

    protected override void ExtractValues(IOrderedDictionary dictionary)
    {
        if (FileUpload1.PostedFile == null || String.IsNullOrEmpty(FileUpload1.PostedFile.FileName) || FileUpload1.PostedFile.InputStream.Length == 0)
            return;

        dictionary[Column.Name] = FileUpload1.FileBytes;
    }

    public override Control DataControl
    {
        get
        {
            return FileUpload1;
        }
    }
}

最后是我的实体元数据类:

[Display(Name = "ServicePhoto", Order = 410, GroupName = "Misc")]
[HideColumnIn(PageTemplate.List)]
[UIHint("Image")]
[ImageSizeValidator(ErrorMessage = "Invalid Photo Size", MinSize = 30, MaxSize = 300)]
 public object ServicePhoto { get; set; }

有两个问题:

1-当IsValid(对象值)被称为value时总是为空!

2-尝试上传新图像时,我总是得到“值无效”客户端错误 验证

0 个答案:

没有答案