我有一个名为 RssController 的控制器,看起来像这样
public partial class RssController : MVCExceptionBaseController
{
public virtual ActionResult Display()
{
var viewModel = new RssList();
return PartialView("Display", viewModel);
}
}
当我单击导航中的“登录”链接时,我收到以下消息:
IControllerFactory “GodsCreationTaxidermy.Helpers.StructureMapControllerFactory”没有 返回名称“Rss”的控制器。
RSS 是从 Site.Mater 调用的,如下所示:
<% Html.RenderAction("Display", "Rss");%>
Display 是一个用于显示 Rss feed 的分部类,它看起来像这样:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<ul>
<%
RssList viewModel = ViewData.Model as RssList;
if (viewModel.Feeds.Count() > 0)
{
foreach (SelectListItem item in viewModel.Feeds)
{ %>
<li>
<%
Response.Write(String.Format("<a href='{0}' target='_blank'>{1} More</a>", item.Value, item.Text.TruncateString(30)));
}%>
</li>
<% }%>
</ul>
我点击的任何其他链接都可以正常工作,除了登录(登录位于它自己的区域中,这是否会导致问题,如果是这样,我将如何解决它?)
默认情况下,Html.RenderAction 方法不会搜索当前区域之外的控制器。为了让登录区域内的控制器找到 Rss 控制器,您需要使用 RenderAction 方法的重载之一:
<% Html.RenderAction("Display", "Rss", new { area = "" }); %>
“空字符串”区域是任何不属于区域的控制器的容器。
我想添加一条评论,部分是为了我自己的利益,当我再次遇到这个问题时。
无论您使用什么框架进行代码/对象注入,都可能存在拼写错误。
在我的例子中,使用 Spring.net,我在对象下面有一个引用,试图注入一个不存在的对象(引用)。
我已经足够好,可以记录表明附近发生了问题,但屏幕只给出了上面的错误,看起来像“找不到控制器”,而不是“在设置属性 Y 时无法解析对对象 X 的引用” ”.
虽然不是OP所需要的,但它可能会帮助其他人。