视图'〜/ Views / Login / Login.aspx'必须派生自ViewPage,ViewPage <tmodel>,ViewUserControl或ViewUserControl <tmodel>

时间:2015-11-04 16:34:37

标签: asp.net .net visual-studio-2010 asp.net-mvc-2

所以我在ASP.NET mvc2解决方案上遇到这个错误,以前工作正常。我不得不安装Visual Studio 2012并且磁盘空间不足,因此不得不手动卸载一些Visual Studio 2010功能,这些功能目前似乎并不是完全必要的。现在每当我尝试调试面向4.0 .NET框架的应用程序时,我都会收到此错误。我尝试重新安装Visual Studio和.net框架,但它一直在发生。我不知道该怎么做。

此外,我尝试了这个问题(Getting the error "The view at '~/Views/Page/home.aspx' must derive from ViewPage, ViewPage<TViewData>, ViewUserControl, or ViewUserControl<TViewData>")中所述的内容,但无法将答案标记为正确无误。请帮忙!

2 个答案:

答案 0 :(得分:4)

已经有一段时间了,但是.. 我现在多次偶然发现这个问题,因为我有同样的错误信息。把我的东西放在一起(不经常练习 ASP.NET MVC 5 )后,我意识到CodeBehind-File WebForm.aspx.cs在WebForm本身的类中包含了Page_Load指令:

public partial class WebForm : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            // Your logic here
        }
    }
}

您的CodeBehind-File可以在(VS2017)项目浏览器中找到(我称之为IndexForm而不是WebForm):

enter image description here

像“删除CodeBehind-File ”这样的建议正在解决问题,但可能会无意中导致此问题导致的新问题。或者您可能只想在WebForm后面实现逻辑,但不能因为文件被删除。

这种情况只是因为自动生成的文件使用的是System.Web.UI.Page,而是来自 System.Web.Mvc.ViewPage 。因此,只需调整继承WebForm的基类即可。希望你能来到这里:

public partial class WebForm : System.Web.Mvc.ViewPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            // Your logic here
        }
    }
}

答案 1 :(得分:0)

如果安装.NET Framework 4.0时出现问题,似乎可能会出现此问题。如果出现此错误,请尝试卸载最近安装的任何可能已更改.NET框架安装的内容。

相关问题