1

フォームを使用してデータベースに更新したばかりのデータを呼び出すときにエラーが発生します。

Visual Studio Express 2010 MVC3 Razorを使用しています(すべての形式の開発に非常に慣れていません)。フォームに入力し、テキストボックス内のテキストをテーブルに正常に保存している更新ボタンをクリックしましたが、別のページでそのデータを表示しようとすると、次のエラーが発生します。

NullReferenceException was unhandled by user code.
Object reference was not set to an instance of an object.

これはほとんどの人にとって明らかなことだと思いますが、私が何を間違えたのかはわかりません。

noobの助けに感謝します、どうもありがとう。

================================================== ================================

「ビュー」のコードは次のとおりです。

@model IEnumerable<bhgc.Models.Data>


@{
ViewBag.Title = "Special Offers";
}

<fieldset>
<legend><h1>Special Offers</h1></legend>
@foreach (var data in Model)
{
<table>
<tr>
    <td>
        <strong>
             @Html.Raw(data.offer1.Replace(Environment.NewLine, "<br/>"))
        </strong>
    </td>
    <td>
        <strong>
             @Html.Raw(data.offer2.Replace(Environment.NewLine, "<br/>"))
        </strong>
    </td>
</tr>
<tr>    
    <td>
        <strong>
             @Html.Raw(data.offer3.Replace(Environment.NewLine, "<br/>"))
        </strong>
    </td>    
</tr>
</table>
}

</fieldset>

================================================== ================================

コントローラーはここにあります:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.Entity;
using bhgc.Models;

namespace bhgc.Controllers
{
public class HomeController : Controller
{
    private DataDBContext db = new DataDBContext();
    public ActionResult Index()
    {
        return View(db.Data.ToList());
    }

    public ActionResult Special()
    {
        return View();
    }

    public ActionResult Contact()
    {
        return View();
    }
}
}

================================================== ================================

データベースから読み取るコントローラー:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using bhgc.Models;

namespace bhgc.Controllers
{
[Authorize] //Created Validataion so inaccessible from outside
public class DataController : Controller
{
    private DataDBContext db = new DataDBContext();

    //
    // GET: /Data/

    public ViewResult Index()
    {
        return View(db.Data.ToList());
    }

    //
    // GET: /Data/Details/5

    public ViewResult Details(string id)
    {
        Data data = db.Data.Find(id);
        return View(data);
    }



    //
    // GET: /Data/Update

    public ActionResult Update()
    {
        var model = db.Data.FirstOrDefault();
        return View(model);
    }

    //
    // POST: /Data/Update

    [HttpPost]
    [ValidateInput(false)]
    public ActionResult Update(Data data)
    {
        if (ModelState.IsValid)
        {
            data.ID = 1; //EF need to know which row to update in the database.       
            db.Entry(data).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Special", "Home");
        }
        return View(data);
    }


}
}
4

1 に答える 1

1

db.Datanull の場合があります。データが返されていることを確認します。ただし、 foreach はそれを処理できます。また、offer1, offer2,またはoffer3nullの可能性があることも考慮してください。null オブジェクトで Replace を呼び出すと、そのエラーもスローされます。

また、あなたのコードにコメントしている人々のアドバイスにも注意してください。いくつかの非常に危険な習慣が有効になっています。

于 2012-04-09T21:08:11.110 に答える