我遇到了以下问题: 我有一个主要的简单页面,我想测试一个控制器动作。控制器位于另一个项目中,但在我的MVC项目和Web.config命名空间区域中引用。
简单的页面就是这样:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="Controllers.MyControllers" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<div>
<%=Html.ActionLink("Persons", "SearchPersons","Person")%>
</div>
</body>
</html>
PersonController 有一个方法SearchPersons,它返回一个View。 PersonController 在名称空间 Controllers.MyControllers 中的控制器项目中定义。 加载简单页面时,它会在我的Html.ActionLink调用中抛出以下异常:
{"Object reference not set to an instance of an object."} at System.Web.Mvc.Html.LinkExtensions.ActionLink(HtmlHelper htmlHelper, String linkText, String actionName, String controllerName, RouteValueDictionary routeValues, IDictionary`2 htmlAttributes)
at System.Web.Mvc.Html.LinkExtensions.ActionLink(HtmlHelper htmlHelper, String linkText, String actionName, String controllerName)
at ASP.default_aspx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in d:\Projects\MVC\Default.aspx:line 12
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
at System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer)
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
有人能指出我正确的方向吗?哪个项目实际上是空的?这是一个引用问题(考虑在另一个项目中)?
提前致谢, Tamash
答案 0 :(得分:0)
此错误与您声明控制器的位置无关。我的假设是你有一个路由巫婆声明一个不是可选的参数,也没有默认值。