【问题标题】:MVC Web Application will not load aspx web pagesMVC Web 应用程序不会加载 aspx 网页
【发布时间】:2016-05-11 12:06:08
【问题描述】:

我在项目的views>主目录中创建了三个aspx网页,路径分别为~/Home/Enter、~/Home/List和~/Home/Search。我可以在 Visual Studio 的属性窗口以及解决方案资源管理器中看到路径是正确的。但是,每当我单击网站上这些页面的链接时,我都会收到一条错误消息,指出“ '~/Views/Home/Enter.aspx' 处的视图必须派生自 ViewPage、ViewPage、ViewUserControl 或 ViewUserControl。"

我已经上传了下面错误的截图。

HomeController.CS 代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace GolfScores.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }

        public ActionResult Search()
        {
            return View();
        }

        public ActionResult Enter()
        {
            return View();
        }

        public ActionResult List()
        {
            return View();
        }
    }
}

添加视图菜单:

【问题讨论】:

  • 显示你的控制器方法。 HomeController 中有 Search() 方法吗?
  • 刚刚添加到原代码中。我添加了一个,但错误仍然存​​在
  • 您的@Html.ActionLink("Search", "Search", "Home") 可以正常工作。但是“Enter”链接不会,因为它需要是"Enter",而不是"Enter.aspx")
  • 更改 Enter.aspx 以使 mvc 应用程序可以找到这些页面,但现在我遇到了一个新错误。我正在更新原始帖子以反映这一点
  • 您是如何生成这些视图的?您拥有文件 Enter.aspx.csEnter.aspx.designer.cs 的事实表明有些奇怪。要创建视图,请右键单击方法,单击“添加视图”并选择“ASPX”作为视图引擎。它将使用<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> 生成正确的视图代码(但你为什么要混合aspx 和cshtml` 视图呢?)

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


【解决方案1】:

您必须将 Search Page 类更改为继承 System.Web.Mvc.ViewPage 类,而不是 System.Web.UI.Page

您的 Search.aspx.cs 应如下所示:

public partial class Search : System.Web.Mvc.ViewPage
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

【讨论】:

  • 问题是关于 MVC,而不是 Web 表单(MVC 中没有事件 (Page_Load(..)) 这样的东西)
  • 没错,任何回调都不会起作用,因为它会击中控制器。但是,将类更改为从 ViewPage 继承将加载 aspx。
猜你喜欢
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
  • 1970-01-01
  • 2015-06-08
相关资源
最近更新 更多