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;
}
}
}
理想情况下,我想做的是创建某种[可选]
属性,如果新文件没有与表单数据的其余部分一起发布,则该属性将完全绕过图像验证器
这样的事情可能吗?如果没有,堆栈溢出的集体智慧将如何解决这个问题?您可能会对下面的文章感兴趣。。。 但我不得不说,我确实同意文章中的大部分观点 主要部分:条件验证 希望这会有所帮助