【问题标题】:Getting 404 while requesting an URL in ASP.NET MVC在 ASP.NET MVC 中请求 URL 时出现 404
【发布时间】:2019-05-17 02:54:16
【问题描述】:

我正在关注this microsoft.com 上的教程。一切正常,直到我联系到this 页。我已经复制了模型和连接字符串的确切代码,但我收到了找不到资源的错误。

由于教程中使用的 VS 版本与我的不同(我的是 VS 2013)。我已经尝试了所有可以谷歌但没有用的解决方案。 我试图解决这个问题超过 6 个小时。

按照 cmets 中的要求编辑帖子:

控制器代码:

namespace MvcMovie.Controllers
{
    public class MoviesController : Controller
    {
        private MovieDBContext db = new MovieDBContext();

        // GET: /Movies/
        public ActionResult Index()
        {
            return View(db.Movies.ToList());
        }

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

视图/电影/Index.cshtml:

@model IEnumerable<MvcMovie.Models.Movie>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Title)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.ReleaseDate)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Genre)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Price)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Title)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ReleaseDate)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Genre)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Price)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
            @Html.ActionLink("Details", "Details", new { id=item.ID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.ID })
        </td>
    </tr>
}

</table>

RouteConfig.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace MvcMovie
{
    public class RouteConfig
    {
        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: "Hello",
           url: "{controller}/{action}/{name}/{id}"
       );
        }
    }
}

我正在尝试打开:http://localhost:51033/Views/Movies/Index.cshtml 此外,当我检查 AppData 文件夹时,它是空的。所以没有创建代码优先数据库。

【问题讨论】:

  • 错误信息是 404。这与连接字符串无关。这意味着服务器找不到浏览器请求的内容。根据错误消息中的 URL,您似乎正在尝试请求查看。但你不应该那样做。您应该编写一个路由到控制器操作的请求,然后该操作将负责返回视图。你应该再看一遍routing上的一些教程,直到你理解为止。
  • 您为什么要请求 /*.cshtml,这不是 ASP.NET MVC 的工作方式。如果这是您在应用启动时定义的映射,您应该只放置 /{controller}/{action}。
  • 好的,正如@wannadream 所说,尝试从您的 URL 中删除 .cshtml。所以只需输入localhost:<yourport>/<youralias>/Movies 并检查它是否打开了您想要的页面。在 MVC 中,控件首先转到控制器,然后调用视图。还尝试在您的 Index 方法上放置一个断点,并检查当您转到 URL 时是否命中它。
  • @Waz 我在第一条评论中都说了。您的 URL 与您的路线不匹配。您需要了解路由。它与您的数据库无关。

标签: asp.net asp.net-mvc routing


【解决方案1】:

在尝试了包括上述答案在内的众多解决方案之后,我终于找到了问题的最终解决方案。我基本上有两个问题:

  1. MVC 的 URL 无效(虽然我确实多次尝试 http://localhost:51033/Movies,但我使用的解决方案生成的 URL 仍然是错误的)。
  2. 我真正的问题是我的连接字符串(这是我所期待的)。显然我的 LocalDB 由于某些原因无法正常工作。所以我改用了安装在我的系统上的 SQL Server,它的工作原理非常棒。

所以,如果其他人遇到这个问题,那么他们可以尝试如下所示的连接字符串:

<add name="MovieDBContext"
    providerName="System.Data.SqlClient"
    connectionString="Data Source=.;Initial Catalog=MvcMovie;Integrated Security=True" />

【讨论】:

    【解决方案2】:

    您以错误的方式请求错误的Urlhttp://localhost:51033/Views/Movies/Index.cshtml 不能是 ASP.NET MVC 中的 Url。请尝试使用以下Url

     http://localhost:51033/Movies/Index
    

    你的问题应该解决了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 2022-08-03
      • 2013-06-19
      相关资源
      最近更新 更多