Страница не существует в MVC

#asp.net #asp.net-mvc #asp.net-mvc-3 #asp.net-mvc-2

#asp.net #asp.net-mvc #asp.net-mvc-3 #asp.net-mvc-2

Вопрос:

Я следую этому руководству, чтобы создать первое mvc приложение (создать приложение базы данных фильмов).

Я уже добавил представление «Создать», но когда я нажимаю на ссылку «Создать новую», страница не существует. Типично 404 error .

Я пытался

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

Я очень новичок MVC , поэтому, пожалуйста, не смейтесь. 🙂

РЕДАКТИРОВАТЬ: GLobal .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
            );

        }
  

HomeController

 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");

        } 

    }
}
  

Комментарии:

1. Как выглядят ваши маршруты?

2. Вы используете это в IIS или со встроенным веб-сервером Visual Studio (Cassini)?

3. Нет, с сервером VS все должно быть в порядке. Можете ли вы опубликовать свой домашний контроллер?

4. какую версию mvc вы используете? Я бы работал с MVC3, и тогда у вас не будет страниц .aspx, а страниц .cshtml

5. Как вы создали представление? Щелкните правой кнопкой мыши по вашему действию и «Добавить просмотр»? убедитесь, что в вашей папке views home есть страница Create.aspx (может быть .cshtml, если вы используете razor). Также проверьте, что у вашего домашнего контроллера есть метод create.

Ответ №1:

Вам нужен метод Get, а также Post Create в вашем контроллере. Вам нужно следующее

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

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

Редактировать: URL-адрес вашего представления create /Home/Create

Ответ №2:

У вас нет действия создать «получить».

В основном действие создания, которое у вас есть, предназначено для отправки формы.

Вам нужен этот код из руководства:

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

Ответ №3:

Созданный вами файл предназначен для HttpPost, который вы будете использовать при попытке создать объект. Первоначально вам потребуется иметь метод контроллера с методом создания HttpGet, который позволит вам вводить данные для нового объекта. Кроме того, убедитесь, что ваше представление находится в разделе Просмотры-> домашняя папка.