代码之家  ›  专栏  ›  技术社区  ›  Drew Noakes

ASP.NETMVC强类型视图编译错误

  •  4
  • Drew Noakes  · 技术社区  · 14 年前

    这个很奇怪。我更改了一些内容(不确定是什么),现在我的应用程序视图在运行时无法编译。

    视图本身是强类型的:

    <%@ Page Language="C#"
             MasterPageFile="~/Views/Shared/Site.Master"
             Inherits="System.Web.Mvc.ViewPage<MyNamespace.OperatorModel>" %>
    

    当我访问这个页面时,它无法编译,说:

    相当标准的错误。相应的源代码行是:

    <%= Html.HiddenFor(model => model.Log) %>
    

    [System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]
    public class views_operator_create_aspx
        : global::System.Web.Mvc.ViewPage, // NOT STRONGLY TYPED
          System.Web.SessionState.IRequiresSessionState,
          System.Web.IHttpHandler {
    

    所以我的问题是,是什么导致视图编译器忽略了 Inherits 视图定义的属性?

    我应该指出,同一个控制器上的其他视图正在工作,它们的页面声明与我上面显示的完全相同。

    编辑

    编辑

    4 回复  |  直到 14 年前
        1
  •  2
  •   hunter    14 年前

    你指的是 OperatorModel 在你的房间里Web.Config?这将允许您显式引用

    <namespaces>
        <add namespace="My.Namespace"/>
    

    或者你可以改变你的想法 Inherits 价值目标:

    Inherits="System.Web.Mvc.ViewPage<My.Namespace.OperatorModel>"
    

    操作员型号

    return View(operatorModel 
        ?? new OperatorModel() { Text = "I can has not found!" });
    
        2
  •  1
  •   CubanX    14 年前

    我发现,当我有这样的完全奇怪的错误,有时如果我删除我所有文件的影子副本,它会清除它。您可以在以下位置找到它:

    %SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
    

    替换上面这行中使用的框架的任何版本。删除与您的项目对应的所有文件(或者只删除目录中的所有内容)。

    另外,我相信你会在那里找到你正在寻找的生成的源代码。

        3
  •  1
  •   Wyatt Barnett    14 年前

    [这让我每个月至少抓到一次]

        4
  •  0
  •   Drew Noakes    14 年前

    好吧,我把我的观点缩小到:

    <%@ Page Language="C#"
             MasterPageFile="~/Views/Shared/Site.Master"
             Inherits="System.Web.Mvc.ViewPage<MyNamespace.OperatorModel>" %>
    <%@ Import Namespace="MyNamespace.Data" %>
    
    <asp:Content ContentPlaceHolderID="MainContent" runat="server">
        <%= GetType() %><br />
        <%= GetType().BaseType %><br />
        <%= GetType().BaseType.BaseType %>
    </asp:Content>
    

    即使所有内容区域都为空,输出仍然是:

    ASP.views\运算符\创建\ aspx

    系统.Web.UI.第页

    <%@ Import 行,我明白了:


    系统.Web.Mvc.ViewPage​​`1[MyNamespace.OperatorModel]
    系统.Web.Mvc.查看页面

    我不知道为什么导入会导致页面不再是强类型的。有人能解释一下吗?任何关于如何调试或跟踪编译的提示都很好。我现在可以继续编写代码,这很好,但这并不是解决问题的一个非常令人满意的结果。

    推荐文章