我有一个名为RssController的控制器,它就是这样的
public partial class RssController : MVCExceptionBaseController
{
public virtual ActionResult Display()
{
var viewModel = new RssList();
return PartialView("Display", viewModel);
}
}
当我点击导航中的“登录”链接时,我收到以下消息:
IControllerFactory 'GodsCreationTaxidermy.Helpers.StructureMapControllerFactory'没有 返回一个名为'Rss'的控制器。
从Site.Mater调用RSS,如下所示:
<% Html.RenderAction("Display", "Rss");%>
显示是一个部分类,用于显示Rss提要,它看起来像这样:
<%@ 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>
我点击的任何其他链接工作正常,除了登录(LogIn在它自己的区域,这可能导致问题,如果是这样,我将如何解决它?)
答案 0 :(得分:7)
默认情况下,Html.RenderAction方法不会搜索当前区域之外的控制器。为了让LogIn区域内的控制器找到Rss控制器,您需要使用RenderAction方法的一个重载:
<% Html.RenderAction("Display", "Rss", new { area = "" }); %>
“空字符串”区域是任何不属于某个区域的控制器的容器。