【发布时间】: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