如何设置 TextBox 的默认值为空字符串而不是 null

发布于 2024-09-14 01:24:00 字数 188 浏览 4 评论 0原文

我可能已经过时了,但我坚持的一个原则是尽可能避免空值。

然而我发现,对于用户输入我想要保存的对象的属性的强类型视图,如果未输入某些字段,它们将被指定为空。

然后,当您尝试保存更改时,验证会失败。

因此,我如何自动将表单上的每个 TextBox 设置为默认为空字符串而不是 null,而不是将每个属性设置为空字符串?

I may be out of date, but one principle I adhere to is avoid nulls as much as possible.

However what I have found is that for a strongly typed view in which the user inputs the properties of an object I want to save, if some fields are not entered they are assigned as null.

Then when you try to save the changes, the validation fails.

So rather than set each property to an empty string, how can I automatically set each TextBox on a form to default to an empty string rather than a null?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

划一舟意中人 2024-09-21 01:24:00

您可以将以下属性放在模型中的字符串属性上:

[DisplayFormat(ConvertEmptyStringToNull=false)]

因此,每当有人发布带有空文本字段的表单时,这些将是一个空字符串而不是 null...

You could put the following attribute on your string-properties in your model:

[DisplayFormat(ConvertEmptyStringToNull=false)]

So whenever someone posts a form with empty text-fields, these will be an empty string instead of null...

十级心震 2024-09-21 01:24:00

老实说,我想说你的编码方法已经过时并且有缺陷。你应该处理所有的可能性,这并不难。这正是 string.IsNullOrEmpty(value); 的用途。

我猜你的验证逻辑是这样的:

if (value == string.Empty) { isValid = false; } 

所以它不处理空值。您应该替换该检查,以便它也检查空值。

string value1 = null;
string value2 = string.Empty;

string.IsNullOrEmpty(value1); // true
string.IsNullOrEmpty(value2); // true

To be honest, I'd say your coding methodology is out of date and flawed. You should handle all possibilities, it's not hard. That's exactly what string.IsNullOrEmpty(value); is for.

I'm guessing your validation logic is something like:

if (value == string.Empty) { isValid = false; } 

So it doesn't handle the null values. You should replace that check so it also checks for nulls.

string value1 = null;
string value2 = string.Empty;

string.IsNullOrEmpty(value1); // true
string.IsNullOrEmpty(value2); // true
固执像三岁 2024-09-21 01:24:00

如接受的答案中所述,在每个模型属性上使用属性的替代解决方案是使用自定义模型绑定器,请参阅 将 JSON 对象传递给 MVC 控制器时 string.empty 转换为 null

An alternative solution to using attributes on each model property, as described in the accepted answer, is using a custom model binder, see string.empty converted to null when passing JSON object to MVC Controller

枫林﹌晚霞¤ 2024-09-21 01:24:00

我在处理需要空字符串的旧服务时遇到了这个问题。我创建了一个扩展方法:

public static string GetValueOrDefault(this string str)
        {
            return str ?? String.Empty;
        }

因此,当您想确保任何空字符串变为空时,可以使用此方法

yourString1.GetValueOrDefault();
yourString2.GetValueOrDefault();

I ran across this problem when dealing with an old service that requires empty strings. I created an extension method:

public static string GetValueOrDefault(this string str)
        {
            return str ?? String.Empty;
        }

So you can use this when you want to make sure any strings that are null become empty

yourString1.GetValueOrDefault();
yourString2.GetValueOrDefault();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文