2013-07-09 29 views
1

尝试使用EntityFramework添加具有读/写操作的MVC控制器。我的控制器名称是UsersController。当我点击添加,VS创建一个名为用户和子目录像创建,编辑,索引等文件夹。使用EntityFramework的MVC控制器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将自动消失。