我有2個場景,我需要一些幫助,在我的ASP.NET MVC應用程序重新驗證。我知道在控制器內進行驗證並不理想,所以我希望將其保存在其他地方 - 也許我可以在我的模型上進行驗證。ASP.NET MVC驗證
1)我有一個模型與各種屬性,其中一些使用DataAnnotations對他們進行驗證。然後,我使用我的視圖中的Html幫助器方法在相關字段中公開任何驗證錯誤。在大多數情況下,這些工作如預期。我遇到的例外情況是我的視圖中的一個字段是下拉列表。我列表中的第一項是空的/空白的,其餘是真正的值。這一領域涉及在我的模型的屬性有以下反對:
[Required(ErrorMessage = "A value from the list is required")]
目前,如果我離開的默認值列表(空白),並沒有從列表中選擇一個真正的價值,我希望它呈現驗證錯誤消息,但它現在將它當作一個有效值處理,並傳遞該驗證。
如果提交的空白/空列表項目被提交,我怎樣才能使它失敗驗證?
2)在我的觀點之一,我有幾個文件上傳控件,使用戶能夠上傳圖像到網站。這些字段不會直接綁定到我的模型中的任何屬性 - 只有生成的文件名(一旦文件被上傳,轉換,重命名等)被分配到我的模型中的'Filename1','Filename2'等屬性。
所以,我想知道如何最好地驗證這些強制性文件上傳?目前我做的每一個文件上傳控件的下面,我的控制器內(!):
HttpPostedFileBase file = null;
file = Request.Files["Filename1"];
if (file != null && file.ContentLength == 0)
ModelState.AddModelError("Filename1", "Image1 is required");
一旦爲每個文件上傳控件完成的,我檢查ModelState中是有效的:
if (ModelState.IsValid)
我敢肯定,必須有執行此驗證的一種更好的方式,和我想像這是不理想有這個控制器,但我不知道最好的方式來處理這個問題。
我很感謝這兩種情況的任何幫助。