【问题标题】:Asp.Net MVC2 Error in view视图中的 Asp.Net MVC2 错误
【发布时间】:2010-09-17 17:25:37
【问题描述】:

我是 MVC 新手,我一直在关注 Steven Andersons Pro ASP.Net Mvc 2 框架书籍,但遇到了以下问题。

位于我的 site.Master 文件中的以下代码行引发以下错误:

<% Html.RenderAction("Menu", "Nav"); %>

{"执行处理程序'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'的子请求时出错。"}

问题似乎出在我试图呈现上述代码结果的部分视图中。

浏览器输出的实际错误如下:

无法加载类型 System.Web.Mvc.ViewUserControl&lt;IEnumerable&lt;WebUI.Models.NavLink&gt;&gt;.

我的部分观点包括以下内容:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<WebUI.Models.NavLink>>" %>
<%foreach (var link in Model) { %>
<%: Html.RouteLink(link.Text, link.RouteValues }%>

似乎也没有可用于该模型的 IntelliSense。

我知道它与继承有关,但我检查了命名空间,这似乎是正确的。

对此的任何帮助将不胜感激。

提前致谢

【问题讨论】:

    标签: c# asp.net-mvc-2


    【解决方案1】:

    我正在阅读 Sanderson 的书,但遇到了同样的问题。解决方案是将文件命名为 NavLink.cs,而菜单继承自 NavLinks。更正链接或重命名文件,一切正常。

    引出一个问题的有趣问题:您如何从错误消息中确定这是一个命名空间问题? 伯爵 B.

    【讨论】:

    • 嗨,Earl - 老实说,我并不确定,我更认为继承/命名空间存在问题,因为模型中没有可用的 IntelliSense。
    【解决方案2】:

    我从那本书的第一版中得到了安德森的例子。我注意到的一件事是,我的 NavLink 是在 Controllers/NavController.cs 中定义的,并且具有 WebUI.Controllers 的命名空间,而不是 WebUI.Models(因此类型是 IEnumerable。您肯定报告的错误听起来像是命名空间问题...

    编辑:当我遇到一个我无法解决的问题时,我发现可以帮助我解决这些示例的一件事是下载他的源代码并使用文件比较工具将他的版本与我的版本进行比较。

    【讨论】:

    • 嗨 Mayo,在本书的第二版中,Anderson 已将 NavLink 移至模型,因此我拥有的命名空间是正确的。感谢源代码提示,我不知道可以下载。我将下载并检查差异。感谢您的帮助。
    【解决方案3】:

    我还发现将类放入一个文件 NavController.cs 的原始想法也会产生此错误。

    将类分成 3 个文件 导航控制器.cs 导航链接.cs CategoryLink.cs

    都具有相同的命名空间 命名空间 WebUI.Controllers

    应该可以解决问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      相关资源
      最近更新 更多