我的问题的后续行动:ASP.NET MVC 2 - 在编辑操作中处理文件;或者,是否可以创建一个“可选”数据注释来跳过其他属性?
如果验证属性触发为假(例如,Required
缺少字段),是否还会调用其他验证属性,或者它们是否会被跳过/短路?
我问是因为我有一个自定义文件验证属性,我只想在文件实际存在时应用。我正在使用 Simon Ince 的条件验证来Required
根据我是否正在创建或编辑实体来切换字段,但我不确定是否可以根据第一个结果实际应用另一个属性。我的意思是,如果文件不存在,以下文件验证器可能会抛出异常:
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;
}
}
}
我不知道如何解决这个问题。这些文件可能存在也可能不存在,但如果存在,我想验证它们。有任何想法吗?