Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The IControllerFactory ... did not return a controller for the name 'Rss'

I have a Controller named RssController which looke like so

public partial class RssController : MVCExceptionBaseController
{

    public virtual ActionResult Display()
    {
        var viewModel = new RssList();
        return PartialView("Display", viewModel);
    }
}

When I click on the Log In link in my navigation I get the following message:

The IControllerFactory 'GodsCreationTaxidermy.Helpers.StructureMapControllerFactory' did not return a controller for the name 'Rss'.

The RSS is called from Site.Mater like so:

<% Html.RenderAction("Display", "Rss");%>

Display is a partial class which is used to display the Rss feed and it looks like this:

<%@ 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>

Any other links I click work fine, except Login (LogIn is in it's own area, could this be causing the issue, if so how would I go about resolving it?)

like image 288
PsychoCoder Avatar asked Feb 23 '23 04:02

PsychoCoder


1 Answers

By default, the Html.RenderAction method won't search for controllers outside the current area. In order for a controller inside the LogIn area to find the Rss controller, you need to use one of the overloads of the RenderAction method:

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

The "empty string" area is a container for any controller that isn't part of an area.

like image 61
Andy Wilson Avatar answered Feb 24 '23 18:02

Andy Wilson