我是MVC的新手,我一直关注Steven Andersons Pro ASP.Net Mvc 2框架书,但遇到了以下问题。
位于我的site.Master文件中的以下代码行引发以下错误:
<% Html.RenderAction("Menu", "Nav"); %>
{“执行处理程序'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper'的子请求时出错。”}
问题似乎在我的部分视图中试图渲染上述代码的结果。
浏览器输出的实际错误如下:
无法加载类型
System.Web.Mvc.ViewUserControl<IEnumerable<WebUI.Models.NavLink>>
。
我的部分视图包含以下内容:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<WebUI.Models.NavLink>>" %>
<%foreach (var link in Model) { %>
<%: Html.RouteLink(link.Text, link.RouteValues }%>
似乎还没有可用于该模型的IntelliSense。
我知道它与继承有关,但我检查了命名空间,这似乎是正确的。
对此的任何帮助都将非常感激。
提前致谢
答案 0 :(得分:0)
我已经从这本书的第一版中得到了安德森的例子。我注意到的一件事是我的NavLink在Controllers / NavController.cs中定义,并且具有WebUI.Controllers的命名空间而不是WebUI.Models(因此类型是IEnumerable&lt; WebUI.Controllers.NavLink&gt;。您报告的错误肯定听起来像命名空间问题......
编辑:我发现有一件事帮我解决了这些例子,就是下载他的源代码并使用文件比较工具将我的版本与我的版本进行比较,当时我遇到了一个我无法弄清楚的问题。
答案 1 :(得分:0)
我正在阅读桑德森的书并遇到同样的问题。解决方案是该文件名为NavLink.cs,而菜单继承自NavLinks。更正链接或重命名文件,一切正常。
引发一个问题的有趣问题:您是如何从错误消息中确定这是命名空间问题的? 伯爵B。
答案 2 :(得分:0)
我还发现了将类放入一个文件的最初想法NavController.cs也会产生这个错误。
将类分成3个文件 NavController.cs NavLink.cs CategoryLink.cs
所有具有相同的命名空间 命名空间WebUI.Controllers
它应该解决问题