1

ユーザーがデータベースにデータを編集/アップロードできるMVCアプリケーションのページがあります。

基本的に「管理者」と呼ばれるサイトにリンクがあり、ここをクリックしてログオンすると、サイトの「特別オファー」セクションに表示されるデータを変更/更新できるページが表示されます。

「管理者」セクションには、データベーステーブルに含まれるデータを表示するいくつかのテキストエリアが含まれています。ユーザーは、これらのテキスト領域に表示されるデータを変更し、[更新]ボタンをクリックして、このデータをデータベースにアップロードできます。次に、サイトの[特別オファー]ページに、この新しく更新されたデータが公開されます。

私が抱えている問題は、データを編集しているユーザーがデータが空のテキストエリアでデータベースを更新しようとすると、[特別オファー]ページが読み込まれないことです(以下に示すエラーが返されます)。データベーステーブルの「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(...)

そうすればnull、を置き換える必要はなく、(うまくいけば)例外を回避できます。

于 2012-05-10T10:56:37.487 に答える