【问题标题】:MVC controller using EntityFramework 404 ErrorMVC 控制器使用 EntityFramework 404 错误
【发布时间】:2013-07-07 01:09:21
【问题描述】:

尝试使用 EntityFramework 添加具有读/写操作的 MVC 控制器。我的控制器名称是 UsersController。当我点击添加时,VS 会创建一个名为 Users 的文件夹以及创建、编辑、索引等子目录。

我的实体模型表名称是用户。

当我尝试通过以下链接联系他们时,我收到“找不到资源 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 }
        );

    }

我的用户控制器看起来像;

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

}

谢谢!

【问题讨论】:

  • 也许您在控制器之前缺少公共访问修饰符...您能展示一下您的控制器的外观吗?
  • 我添加了我的用户控制器代码来提问。谢谢!

标签: asp.net-mvc entity-framework-4 http-status-code-404


【解决方案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 }
    );
}

【讨论】:

  • 嗨 djpark。我将您的示例代码添加到我的 RouteConfig.cs 但没有运气,结果相同。你还有别的想法吗?谢谢。
  • 你好。构建项目后,您的解决方案将起作用。再次感谢 djpark。!
【解决方案2】:

一段时间后,想出一些新的东西。如果您的控制器中有错误(语法错误..等),您可能会收到 404 错误。如果您清除该错误,404 将自动消失。

【讨论】:

    猜你喜欢
    • 2017-10-02
    • 2014-11-20
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 2017-01-24
    相关资源
    最近更新 更多