1

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

基本上,网站上有一个名为“管理员”的链接,他们单击此处,登录并显示一个页面,该页面允许他们更改/更新网站“特别优惠”部分显示的数据。

“Admin”部分包含一些文本区域,用于显示数据库表中包含的数据。然后,用户可以更改这些文本区域中显示的数据并单击“更新”按钮,然后将这些数据上传到数据库,然后网站中的“特别优惠”页面将这些新更新的数据显示给公众。

我遇到的问题是,如果正在编辑数据的用户尝试使用没有数据的文本区域更新数据库,则不会加载“特价商品”页面(它返回如下所示的错误)。我检查了数据库表的“Nullable”选项设置为“True”,但这没有区别。

[错误]

“/”应用程序中的服务器错误。

你调用的对象是空的。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。源错误:

Line 25: @Html.Raw(tbl_special_offers.offer3.Replace(Environment.NewLine, "<br/>"))

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

@model IEnumerable<bhgc.Models.tbl_special_offers>
@{
    ViewBag.Title = "Special Offers";
}
<div>
    <fieldset>
            <legend>Special Offers</legend>
        <br />
        @foreach (var tbl_special_offers in Model)
        {

            <div style="overflow: hidden; width: 100%;">
                <div style="float: left; width: 40%; height: 50%; margin-left: 50px; border: 1px solid #ddd;  padding: 15px;">
                    @Html.Raw(tbl_special_offers.offer1.Replace(Environment.NewLine, "    <br/>"))
                </div>
                <div style="float: right; width: 40%; height: 50%; margin-right: 50px; border: 1px solid #ddd; padding: 15px;">
                    @Html.Raw(tbl_special_offers.offer2.Replace(Environment.NewLine, "    <br/>"))
                </div>
            </div>


    }
    </fieldset>
</div>

无论如何,是否允许该字段为空,或者在更新时自动在该字段中附加一个空格,以便当公众查看“特价商品”页面时它不会返回错误?

相关网站和页面目前在http://www.boarsheadgolfcentre.co.uk/Home/Special上公开

非常感谢。

4

1 回答 1

2

由于您正在对 null 执行替换的项目,您为什么不尝试这样的事情

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

这样你不应该替换 on null,并且会(希望)避免异常。

于 2012-05-10T10:56:37.487 回答