IControllerFactory ...没有返回名称为“Rss”的控制器

问题描述 投票:0回答:2

我有一个名为 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>

我点击的任何其他链接都可以正常工作,除了登录(登录位于它自己的区域中,这是否会导致问题,如果是这样,我将如何解决它?)

asp.net asp.net-mvc-2
2个回答
8
投票

默认情况下,Html.RenderAction 方法不会搜索当前区域之外的控制器。为了让登录区域内的控制器找到 Rss 控制器,您需要使用 RenderAction 方法的重载之一:

<% Html.RenderAction("Display", "Rss", new { area = "" }); %>

“空字符串”区域是任何不属于区域的控制器的容器。


0
投票

我想添加一条评论,部分是为了我自己的利益,当我再次遇到这个问题时。

无论您使用什么框架进行代码/对象注入,都可能存在拼写错误。

在我的例子中,使用 Spring.net,我在对象下面有一个引用,试图注入一个不存在的对象(引用)。

我已经足够好,可以记录表明附近发生了问题,但屏幕只给出了上面的错误,看起来像“找不到控制器”,而不是“在设置属性 Y 时无法解析对对象 X 的引用” ”.

虽然不是OP所需要的,但它可能会帮助其他人。

© www.soinside.com 2019 - 2024. All rights reserved.