MVC View无法获取模型的ID

时间:2016-01-12 21:03:16

标签: asp.net-mvc asp.net-mvc-4 null

我是MVC的新手并尝试了我的第一个项目。

我有一个包含多个表的数据库,我想为每个表创建控制器。

我开始使用具有ID和DiscNum的Disc,两者都是int类型。

这是我创建的控制器:

public class DiscController : Controller
{
    // GET: Disc
    public ActionResult Index()
    {
        var entities = new MovieDBEntities();

        return View(entities.Disc);
    }

    // GET: Disc/Details/5
    public ActionResult Details(int id)
    {
        return View();
    }

    // GET: Disc/Create
    public ActionResult Create()
    {
        return View();
    }

    // POST: Disc/Create
    [HttpPost]
    public ActionResult Create(FormCollection collection)
    {
        try
        {
            // TODO: Add insert logic here

            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

    // GET: Disc/Edit/5
    public ActionResult Edit(int id)
    {
        return View();
    }

    // POST: Disc/Edit/5
    [HttpPost]
    public ActionResult Edit(int id, FormCollection collection)
    {
        try
        {
            // TODO: Add update logic here

            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

    // GET: Disc/Delete/5
    public ActionResult Delete(int id)
    {
        return View();
    }

    // POST: Disc/Delete/5
    [HttpPost]
    public ActionResult Delete(int id, FormCollection collection)
    {
        try
        {
            // TODO: Add delete logic here

            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }
}

这是我的Index.cshtml文件:

@model IEnumerable<Movies.Models.Disc>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.DiscNum)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.DiscNum)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
            @Html.ActionLink("Details", "Details", new { id=item.ID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.ID })
        </td>
    </tr>
}

</table>

一切都很顺利,但细节查看,所有其他观点都没问题。

这是我的详细信息视图:

@model Movies.Models.Disc

@{
    ViewBag.Title = "Details";
}

<h2>Details</h2>

<div>
    <h4>Disc</h4>
    <hr />
    <dl class="dl-horizontal">
        <dt>
            @Html.DisplayNameFor(model => model.DiscNum)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.DiscNum)
        </dd>

    </dl>
</div>
<p>
    @Html.ActionLink("Edit", "Edit", new { id = Model.ID }) |
    @Html.ActionLink("Back to List", "Index")
</p>

当我尝试打开它时,我收到一条错误消息:System.NullReferenceException。     错误出现在以下行中:@ Html.ActionLink(&#34;编辑&#34;,&#34;编辑&#34;,新{id = Model.ID})|

模型可能为空。

我该如何解决?

有人可以帮我一把吗?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

在获取详细信息视图中,您需要将模型传递给视图

[HttpGet]
public ActionResult Details(int id)
{
    var model = GetDetailsById(id);
    return View(model);
}