簡體   English   中英

ASP.NET MVC 2-在編輯操作中處理文件; 或者,是否可以創建一個“可選”數據注釋以跳過其他屬性?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM