#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, который позволит вам вводить данные для нового объекта. Кроме того, убедитесь, что ваше представление находится в разделе Просмотры-> домашняя папка.