DisplayFor helper不会在删除视图中填充数据库中的记录

时间:2017-12-02 17:46:42

标签: asp.net asp.net-mvc razor html-helper

我想从我的数据库中删除一条记录,但是在删除确认视图中

DisplayFor Helper不显示我的数据库中的任何记录

DisplayNameFor工作正常,我不知道自己做错了什么,

任何帮助将不胜感激。

这是我的代码。

控制器代码:

public ActionResult Delete(int id)
    {

        return View();
    }

    [HttpPost]
    public ActionResult Delete(int id, FormCollection collection)
    {
        try
        {
            using (var db = new Database1Entities())
            {

                var tooltip = db.tooltip_tbl.Find(id);
                db.tooltip_tbl.Remove(tooltip);
                db.SaveChanges();

                return RedirectToAction("Index");
            }

        }
        catch
        {
            return View();
        }
    }

观看代码:

@model WebApplication7.Models.tooltip_tbl

@{
ViewBag.Title = "Delete";
}

<h2>Delete</h2>

<h3>Are you sure you want to delete this?</h3>

<div>
<hr />
<dl class="dl-horizontal">
    <dt>@Html.DisplayNameFor(item => item.Title)</dt>

    <dd>@Html.DisplayFor(item => item.Title)</dd>

    <dt>@Html.DisplayNameFor(item => item.Info)</dt>

    <dd>@Html.DisplayFor(item => item.Info)</dd>

</dl>

@using (Html.BeginForm()) {
    @Html.AntiForgeryToken()

    <div class="form-actions no-color">
        <input type="submit" value="Delete" class="btn btn-default" /> |
        @Html.ActionLink("Back to List", "Index")
    </div>
}
</div>

1 个答案:

答案 0 :(得分:1)

使用当前代码,您的GET操作方法不会将任何内容传递给您的删除视图。因此,您的视图模型实际上是nullDisplayFor辅助方法正在为您进行空检查,因此您没有获得任何空引用异常。

您需要在GET操作中将有效的tootip对象传递给您的视图。

public ActionResult Delete(int id)
{
    var tooltip = db.tooltip_tbl.Find(id);
    return View(tooltip);
}