Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 2 ASP.NET MVC 2-在编辑操作中处理文件;或者,是否可以创建一个';可选';跳过其他属性的数据注释?_Asp.net Mvc 2_C# 4.0_File Upload_Data Annotations_Validation - Fatal编程技术网

Asp.net mvc 2 ASP.NET MVC 2-在编辑操作中处理文件;或者,是否可以创建一个';可选';跳过其他属性的数据注释?

Asp.net mvc 2 ASP.NET MVC 2-在编辑操作中处理文件;或者,是否可以创建一个';可选';跳过其他属性的数据注释?,asp.net-mvc-2,c#-4.0,file-upload,data-annotations,validation,Asp.net Mvc 2,C# 4.0,File Upload,Data Annotations,Validation,我遇到了一些设计问题,我很好奇是否有其他人也遇到过类似的问题 我有一个相当复杂的模型,我有一个编辑动作的方法。每个实体都有两个与其关联的图像,以及其他更普通的数据。创建时,这些图像是[必需的]。但是,在编辑实体时,这些图像已经存在,因为它们在创建时也是必需的。因此,我不需要按要求标记它们 在整个过程中添加一点活动扳手是我的自定义图像验证属性: public class ValidateFileAttribute : ValidationAttribute { public overrid

我遇到了一些设计问题,我很好奇是否有其他人也遇到过类似的问题

我有一个相当复杂的模型,我有一个编辑动作的方法。每个实体都有两个与其关联的图像,以及其他更普通的数据。创建时,这些图像是
[必需的]
。但是,在编辑实体时,这些图像已经存在,因为它们在创建时也是必需的。因此,我不需要按要求标记它们

在整个过程中添加一点活动扳手是我的自定义图像验证属性:

public class ValidateFileAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        var file = value as HttpPostedFileBase;

        if (file == null)
        {
            return false;
        }

        string[] validExtensions = { "jpg", "jpeg", "gif", "png" };
        string[] validMimeTypes = { "image/jpeg", "image/pjepeg", "image/gif", "image/png" };

        string[] potentialFileExtensions = file.FileName.Split('.');
        string lastExtension = potentialFileExtensions[(potentialFileExtensions.Length - 1)];
        string mimeType = file.ContentType;

        bool extensionFlag = false;
        bool mimeFlag = false;

        foreach (string extension in validExtensions)
        {
            if (extension == lastExtension)
            {
                extensionFlag = true;
            }
        }

        foreach (string mt in validMimeTypes)
        {
            if (mt == mimeType)
            {
                mimeFlag = true;
            }
        }

        if (extensionFlag && mimeFlag)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}
理想情况下,我想做的是创建某种
[可选]
属性,如果新文件没有与表单数据的其余部分一起发布,则该属性将完全绕过图像验证器


这样的事情可能吗?如果没有,堆栈溢出的集体智慧将如何解决这个问题?

您可能会对下面的文章感兴趣。。。 但我不得不说,我确实同意文章中的大部分观点

主要部分:条件验证

希望这会有所帮助