2

正常に動作するカスタム イメージ フィールド テンプレートを作成しました。画像サイズの何らかの検証を作成することにしたので、カスタム検証属性を作成しました。コードは次のとおりです。

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; }

2 つの問題があります。

1- IsValid(オブジェクト値) と呼ばれる値が常に null の場合!

2-新しい画像をアップロードしようとすると、クライアント側の検証で常に「値が無効です」というエラーが表示されます。

4

0 に答える 0