[英]ASP.NET MVC 2 - Handling files in an edit action; Or, is it possible to create an 'Optional' data annotation which would skip over other attributes?
我遇到了一個設計問題,我很好奇是否有人遇到了類似的問題。
我有一個相當復雜的模型,其中有一個“編輯”操作方法。 每個單獨的實體都有兩個與之關聯的圖像,以及其他更常見的數據。 這些圖像在創建時是[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;
}
}
}
我理想地希望做的是創建某種[Optional]
屬性,如果新文件未與表單數據的其余部分一起未過帳,則該屬性將完全繞過圖像驗證器。
這樣的事情可能嗎? 如果沒有,Stack Overflow的集體智慧將如何解決這個問題?
您可能對下一篇文章感興趣...但是我不得不說,我確實同意本文中的大多數內容。
主要部分:條件驗證
http://andrewtwest.com/2011/01/10/conditional-validation-with-data-annotations-in-asp-net-mvc/
希望這會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.