【发布时间】:2009-07-31 11:31:58
【问题描述】:
我是 .NET 和 MVC 新手,在 ASP 受苦太久后第一次学习它,现在是时候转换成更轻松地构建 Web 应用程序的工作了。
我一直在阅读 Stephen Walther 的有用视频教程,以了解大多数事情,并且到目前为止我取得了不错的进展。我遇到困难的地方是为我的应用程序 ConversationApp 中的记录创建详细信息页面。列出数据和插入新数据工作正常,但每次我查看任何特定记录的详细信息页面时,我都会收到错误消息“对象引用未设置为对象的实例”。
传递给控制器的 URL 是: /Home/Details/X(其中 X 是记录的唯一 ID)
如果能帮助我克服可能是我的一个非常愚蠢的错误或疏忽,我将不胜感激。
这是我目前的情况,代码方面:
HomeController.CS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using ConversationApp.Models;
namespace ConversationApp.Controllers
{
public class HomeController : Controller
{
private conversationDBEntities _entities = new conversationDBEntities();
//
// GET: /Home/
public ActionResult Index()
{
return View(_entities.conversation.ToList());
}
//
// GET: /Home/Details/5
public ActionResult Details(int id)
{
return View();
}
//
// GET: /Home/Create
public ActionResult Create()
{
return View();
}
//
// POST: /Home/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude="conversation_id")]conversation conversationToCreate)
{
try
{
// TODO: Add insert logic here
_entities.AddToconversation(conversationToCreate);
_entities.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
//
// GET: /Home/Edit/5
public ActionResult Edit(int id)
{
return View();
}
//
// POST: /Home/Edit/5
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection collection)
{
try
{
// TODO: Add update logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
}
}
Details.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ConversationApp.Models.conversation>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Details
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Details</h2>
<fieldset>
<legend>Fields</legend>
<p>
conversation_name:
<%= Html.Encode(Model.conversation_name) %>
</p>
<p>
conversation_owner:
<%= Html.Encode(Model.conversation_owner) %>
</p>
<p>
conversation_description:
<%= Html.Encode(Model.conversation_description) %>
</p>
<p>
conversation_homeurl:
<%= Html.Encode(Model.conversation_homeurl) %>
</p>
</fieldset>
<p>
<%=Html.ActionLink("Edit", "Edit", new { id=Model.conversation_id }) %> |
<%=Html.ActionLink("Back to List", "Index") %>
</p>
/Home/Details/X 的错误消息(其中 X 是记录的唯一 ID)
Server Error in '/' Application.
--------------------------------------------------------------------------------
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 13: <p>
Line 14: conversation_name:
Line 15: <%= Html.Encode(Model.conversation_name) %>
Line 16: </p>
Line 17: <p>
Source File: c:\Users\Michael Harris\Documents\Visual Studio 2008\Projects\ConversationApp\ConversationApp\Views\Home\Details.aspx Line: 15
Stack Trace:
[NullReferenceException: Object reference not set to an instance of an object.]
ASP.views_home_details_aspx.__RenderContent2(HtmlTextWriter __w, Control parameterContainer) in c:\Users\Michael Harris\Documents\Visual Studio 2008\Projects\ConversationApp\ConversationApp\Views\Home\Details.aspx:15
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +256
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
System.Web.UI.Control.Render(HtmlTextWriter writer) +10
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
ASP.views_shared_site_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in c:\Users\Michael Harris\Documents\Visual Studio 2008\Projects\ConversationApp\ConversationApp\Views\Shared\Site.Master:26
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +256
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
System.Web.UI.Control.Render(HtmlTextWriter writer) +10
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +134
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
System.Web.UI.Page.Render(HtmlTextWriter writer) +29
System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer) +59
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1266
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.4918; ASP.NET
Version:2.0.50727.4918
【问题讨论】:
-
顺便说一句,这是一个结构很好的问题。干得好。
标签: c# asp.net-mvc