Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MVC更新到数据库时允许Textarea为null/空#_C#_Asp.net Mvc 3_Razor_Textarea - Fatal编程技术网

C# 使用MVC更新到数据库时允许Textarea为null/空#

C# 使用MVC更新到数据库时允许Textarea为null/空#,c#,asp.net-mvc-3,razor,textarea,C#,Asp.net Mvc 3,Razor,Textarea,我在MVC应用程序上有一个页面,用户可以在其中编辑/上传数据到数据库 基本上,他们在网站上有一个名为“Admin”的链接,他们单击此处登录,并显示一个页面,允许他们更改/更新网站“特价”部分显示的数据 “Admin”部分包含几个文本区域,用于显示数据库表中包含的数据。然后,用户可以更改这些文本区域中显示的数据,并单击“更新”按钮,然后将这些数据上载到数据库,然后站点中的“特价”页面向公众显示这些新更新的数据 我遇到的问题是,如果编辑数据的用户试图用数据为空的文本区域更新数据库,那么“特价”页面将

我在MVC应用程序上有一个页面,用户可以在其中编辑/上传数据到数据库

基本上,他们在网站上有一个名为“Admin”的链接,他们单击此处登录,并显示一个页面,允许他们更改/更新网站“特价”部分显示的数据

“Admin”部分包含几个文本区域,用于显示数据库表中包含的数据。然后,用户可以更改这些文本区域中显示的数据,并单击“更新”按钮,然后将这些数据上载到数据库,然后站点中的“特价”页面向公众显示这些新更新的数据

我遇到的问题是,如果编辑数据的用户试图用数据为空的文本区域更新数据库,那么“特价”页面将不会加载(它返回如下所示的错误)。我已经检查了数据库表是否将“Nullable”选项设置为“True”,但这没有什么区别

[错误] “/”应用程序中出现服务器错误

对象引用未设置为对象的实例。 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源。 异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。 源错误:

Line 25: @Html.Raw(tbl_special_offers.offer3.Replace(Environment.NewLine, "<br/>"))
第25行:@Html.Raw(tbl\u特殊优惠.offer3.Replace(Environment.NewLine,“
”)

这是“特价”视图用于访问数据库和显示数据的代码(使用Visual Web Developer Express):

@model IEnumerable
@{
ViewBag.Title=“特别优惠”;
}
特价

@foreach(型号中的var tbl_特别优惠) { @Html.Raw(tbl_special_offers.offer1.Replace(Environment.NewLine,“
”)) @Html.Raw(tbl_special_offers.offer2.Replace(Environment.NewLine,“
”)) }
是否允许字段为空,或者在字段更新时自动在字段中添加空格,以便公众查看“特价”页面时不会返回错误

该网站和相关页面目前在


非常感谢。

既然您正在对null执行替换,为什么不尝试类似的方法呢

(tbl_special_offers.offer2 ?? String.Empty).Replace(...)

这样,您就不应该在
null
上替换,并且(希望)可以避免异常。

谢谢您,Balthy,很抱歉,我应该添加一件事,那就是我正在使用
Replace(Environment.NewLine,
part以保留文本区域中的换行符/格式输入。我更新了视图代码,如下所示:
@Html.Raw(tbl\u special\u offers.offer1??String.Empty.Replace(Environment.NewLine,“
”)
,它可以很好地处理空文本区域,但不幸的是,它删除了换行符的保留-有没有办法解决这个问题?是否缺少一组()括号@Html.Raw((tbl_special_offers.offer1??String.Empty)。Replace(Environment.NewLine,“
”)这样您就可以在tbl_special_offers.offer2上执行Replace(…),如果它不为null,则在String.emptythank上执行它。我恐怕真的不知道。我对所有这些都是一个绝对的初学者(大多数代码帮助都来自于这里或ASP.net网站上的Razor MVC3 C#教程)。我不熟悉各种语法等。没问题,这解决了吗?
??
运算符说“如果不为null,请使用左操作数,否则请使用右操作数”。您无法在
null
上执行方法,因此,当您执行类似
(value1??value2)的操作时,method()
将在
value1
上执行method(),如果可以,否则将使用
value2
(tbl_special_offers.offer2 ?? String.Empty).Replace(...)