我有一個視圖,我在其中加載表單以更新用戶。當我UpdateUserViewModel使用要在頁面上顯示的資料填充視圖模型時,Info屬性 onUserModel為空。這是意料之中的,因為資料庫中根本沒有它的記錄,所以它沒有被檢索到。但是,我仍然為其兩個屬性添加隱藏欄位,因為當我發布表單時,我希望Info使用默認值創建屬性,這確實發生了。
public UpdateUserViewModel {
public UserModel User { get; set; }
}
public class UserModel
{
public int Id { get; set; }
public string Name { get; set; }
public InfoModel Info { get; set; }
}
public class InfoModel {
public DateTime InfoDate { get; set; }
public string ConcurrencyToken { get; set; }
}
發布表單會ModelState.IsValid導致InfoDate. InfoModel它給出了錯誤資訊The value '' is invalid。但這沒有意義,因為當我檢查發布模型的InfoDate值時,我看到它是默認的 min date 1/1/0001 12:00:00 AM。
我曾考慮過將其InfoDate設為可空,但這沒有意義,因為我需要將此屬性映射到業務層模型并將其設定為默認日期。我也不明白為什么當它明顯默認為一個值時它會顯示該錯誤。
為什么The value '' is invalid我看到提交的表單已成功默認為空日期1/1/0001 12:00:00 AM?我怎樣才能解決這個問題?
我在想也許它正在專門查看用戶在欄位中設定的值,而不是最終作為屬性值的值?但如果是這樣,它為什么會在意?我沒有任何驗證屬性InfoDate,例如[Required].
uj5u.com熱心網友回復:
在客戶端系結資料時,它會在Model之前從ModelState中獲取值。嘗試添加ModelState.Clear()并且TryValidateModel(xxx)在檢查ModelState之前。然后你不會得到The value '' is invalid。
ModelState.Clear();
TryValidateModel(MyProperty);
var IsValid=ModelState.IsValid;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/476887.html
標籤:C# asp.net-mvc asp.net 核心
