2013-07-09 5 views
1

Попытка добавления контроллера MVC с действием чтения/записи с использованием EntityFramework. Мое имя контроллера - UserController. Когда я нажимаю add, VS создает папку с именем Users и подкаталоги, такие как Create, Edit, Index и т. Д.MVC-контроллер с использованием EntityFramework 404 Ошибка

Имя моей модели-модели - это пользователи.

Когда я пытаюсь связаться со ссылками ниже, я получил ошибку «Не найден ресурс 404».

http://localhost:64871/Users <br> 
http://localhost:64871/Users/Index<br> 
http://localhost:64871/Users/Create 

я могу достигнуть ссылки, которые я создал с пустым вариантом контроллера MVC.

http://localhost:64871/Home<br> 
http://localhost:64871/Home/Test 

Что может быть неправильным? Должен ли я добавить некоторые значения в файл RouteConfig?

Моего RouteConfig.cs

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

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

    } 

Мой UsersController выглядеть;

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

namespace Aplatform.Controllers 
{ 
public class UsersController : Controller 
{ 
    private dbEntities db = new dbEntities(); 

    // 
    // GET: /Users/ 

    public ActionResult Index() 
    { 
     return View(db.Users.ToList()); 
    } 

    // 
    // GET: /Users/Details/5 

    public ActionResult Details(Guid id = null) 
    { 
     Users users = db.Users.Find(id); 
     if (users == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(users); 
    } 

    // 
    // GET: /Users/Create 

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

    // 
    // POST: /Users/Create 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create(Users users) 
    { 
     if (ModelState.IsValid) 
     { 
      users.ID = Guid.NewGuid(); 
      db.Users.Add(users); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     return View(users); 
    } 

    // 
    // GET: /Users/Edit/5 

    public ActionResult Edit(Guid id = null) 
    { 
     Users users = db.Users.Find(id); 
     if (users == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(users); 
    } 

    // 
    // POST: /Users/Edit/5 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Edit(Users users) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Entry(users).State = EntityState.Modified; 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(users); 
    } 

    // 
    // GET: /Users/Delete/5 

    public ActionResult Delete(Guid id = null) 
    { 
     Users users = db.Users.Find(id); 
     if (users == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(users); 
    } 

    // 
    // POST: /Users/Delete/5 

    [HttpPost, ActionName("Delete")] 
    [ValidateAntiForgeryToken] 
    public ActionResult DeleteConfirmed(Guid id) 
    { 
     Users users = db.Users.Find(id); 
     db.Users.Remove(users); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    protected override void Dispose(bool disposing) 
    { 
     db.Dispose(); 
     base.Dispose(disposing); 
    } 
} 

}

Спасибо!

+0

Возможно, вам не хватает модификатора общедоступного доступа перед контроллером ... Не могли бы вы показать, как выглядят контроллеры? – CoffeeCode

+0

Я добавил коды пользователей на вопрос. Благодаря! –

ответ

1

Я столкнулся с аналогичными ситуациями, когда маршрут по умолчанию не обрабатывает путь. Я добавил резервные маршруты для обработки этих случаев. Попробуйте следующее:

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

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 

    routes.MapRoute(
     name: "Users", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Users", action = "Index", id = UrlParameter.Optional } 
    ); 
} 
+0

Привет djpark. Я добавил ваш пример кода к моему RouteConfig.cs, но не повезло, тот же результат. Есть ли у вас другая идея? Спасибо. –

+0

Привет снова. После создания проекта ваше решение работает. Еще раз спасибо djpark.! –

0

Через некоторое время выясните что-то новое. Если у вас есть ошибки в контроллере (синтаксическая ошибка и т. Д.), Вы можете получить ошибку 404. Если вы очистите эти ошибки, 404 автоматически исчезнет.

Смежные вопросы