在ASP.NET MVC中请求URL时获取404

时间:2018-12-16 14:59:56

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

我正在关注this microsoft.com上的教程。一切正常,直到我到达this 页。我已经复制了Model和连接字符串的确切代码,但是却收到资源未找到的错误。 enter image description here

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

按照评论中的要求编辑帖子:

控制器代码:

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文件夹时,它为空。因此,不会创建代码优先数据库。

2 个答案:

答案 0 :(得分:2)

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

 http://localhost:51033/Movies/Index

您的问题应该解决!

答案 1 :(得分:0)

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

  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" />