空格在razor视图c#中转换为null
本文关键字:转换 null razor 视图 空格 | 更新日期: 2023-09-27 18:13:31
我有一个具有string
类型属性的模型。我将这个模型绑定到视图(剃刀视图),并将这个属性绑定到隐藏字段。该属性的值为blank (String.Empty
)。
当我发布模型到控制器时,我得到的值是null而不是空白。
任何想法?
添加[DisplayFormat(ConvertEmptyStringToNull = false)]到你的类标记
如果您试图在往返操作中将空值保留为空值,将空字符串保留为空字符串,也许您可以定义一个特殊的常量字符串值来表示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()
这就是MVC框架在将请求数据映射到控制器参数时所做的,并且请求数据是空值。如果您检查Request.Form
集合中的值,您将看到它实际上是一个空字符串,而不是空值。
您可以处理框架生成的空值,或者从Request.Form
集合中读取数据。
这个链接应该有帮助。
为什么我从剃刀视图接收POST请求时得到null而不是空字符串?
"默认模型绑定将为您创建一个新的SomeModel。字符串类型的默认值是null,因为它是引用类型,所以它被设置为null。"作者:statichippo