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