【问题标题】:Page does not exist in MVCMVC 中不存在页面
【发布时间】:2011-10-04 14:16:06
【问题描述】:

我正在按照本教程创建第一个 mvc 应用程序 (Create a Movie Database Application)

我已经添加了创建视图,但是当我单击创建新链接时,该页面不存在。典型的404 error

我试过了

/home/create
/create
/create.aspx
/home/create.aspx

我是MVC 的新手,所以请不要笑。 :)

编辑:全球 .asax

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

        }

家庭控制器

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

namespace Movies.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        private LearningEntities _db = new LearningEntities();

        public ActionResult Index()
        {

            return View(_db.Movies1.ToList());

        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create([Bind(Exclude = "Id")] Movie movieToCreate)
        {

            if (!ModelState.IsValid)
                return View();
            _db.AddToMovies1(movieToCreate);
            _db.SaveChanges();
            return RedirectToAction("Index");

        } 

    }
}

【问题讨论】:

  • 你的路线是什么样的?
  • 您是在 IIS 中运行它还是使用内置的 Visual Studio Web 服务器 (Cassini)?
  • 不,VS 服务器应该没问题。你能发布你的 Home 控制器吗?
  • 你使用什么版本的mvc?我会使用 MVC3,然后你没有 .aspx 页面,但是 .cshtml 页面
  • 您是如何创建视图的?右键单击您的操作和“添加视图”?检查您的views\home 文件夹中是否包含Create.aspx 页面(如果您使用剃须刀,可能是.cshtml)。还要检查你的家庭控制器是否有一个 create 方法。

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-2


【解决方案1】:

您需要在控制器中使用 Get 和 Post Create 方法。您需要以下内容

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

public ActionResult Create([Bind(Exclude = "Id")] Movie movieToCreate) 
{ 
 ....
}

编辑:创建视图的 URL 是 /Home/Create

【讨论】:

    【解决方案2】:

    您没有创建“获取”操作。

    基本上,您所拥有的创建操作用于提交表单时。

    您需要教程中的这段代码:

    // GET: /Home/Create 
    public ActionResult Create()
    {
        return View();
    }  
    

    【讨论】:

      【解决方案3】:

      您拥有的 Create 用于 HttpPost,您将在尝试创建实体时使用它。最初,您需要一个带有 HttpGet create 方法的控制器方法,它可以让您为新实体输入数据。此外,请确保您的视图位于 Views->home 文件夹中。

      【讨论】:

        猜你喜欢
        • 2018-10-04
        • 1970-01-01
        • 2016-08-03
        • 1970-01-01
        • 2015-06-14
        • 1970-01-01
        • 2014-04-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多