[英]Blanks converts to null in razor view C#
我的模型具有string
類型的屬性。 我將此模型綁定到視圖(剃刀視圖),並將此屬性綁定到隱藏字段。 該屬性的值為空白( String.Empty
)。
當我將模型發布到控制器時,得到的值是null而不是空白。
任何想法?
將[DisplayFormat(ConvertEmptyStringToNull = false)]添加到您的類標記中。
這就是MVC框架在將請求數據映射到控制器參數並且請求數據為空值時所做的事情。 如果檢查Request.Form
集合中的值,您將看到它實際上是一個空字符串,而不是空值。
您可以處理框架生成的空值,也可以從Request.Form
集合中讀取數據。
如果要為往返操作將null值保留為null,將空字符串保留為空字符串,則可以定義一個特殊的常量字符串值來表示null。 也許在靜態類中是這樣的(因此您可以對其進行擴展):
private const string NULL_STRING = "__@NULL@__";
public static string StringifyIfNull(this string s) {
return s == null ? NULL_STRING : s;
}
public static string DestringifyIfNull(this string s) {
return NULL_STRING == s ? null : s;
}
因此,在模型上設置隱藏的字符串屬性時,請使用hiddenString.StringifyIfNull()
,而在POST之后讀回隱藏的值時,請使用model.HiddenString.DestringifyIfNull()
該鏈接應該會有所幫助。
從Razor View接收POST請求時,為什么我得到null而不是空字符串?
“默認的模型綁定將為您創建一個新的SomeModel。字符串類型的默認值為null,因為它是引用類型,因此將其設置為null。” statichippo的原始答案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.