gpt4 book ai didi

c# - 新的 MVC 4 项目。默认路由被忽略

转载 作者:太空宇宙 更新时间:2023-11-03 17:41:30 25 4
gpt4 key购买 nike

我刚刚创建了一个新的 MVC 4 项目,并使用数据库优先添加了一个 EDO.NET 实体数据模型。我不确定确切原因,但事情似乎不像以前那样正常运行。我不得不手动添加 EF 代码生成项来生成实体类。

无论如何,我遇到的主要问题是默认路由似乎被忽略了。我的路由配置是默认的,如下:

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

但是 [LOCALHOST]/Properties/找不到/Properties/Index,它只是在“/”应用程序中返回 404 服务器错误。找不到资源。

我不会忘记犯了一些愚蠢的错误或忘记了一些重要的事情,但我已经在 StackOverflow 和互联网上搜索了类似的问题,但没有一个解决方案有任何帮助。如果有人知道原因,我会很感激在正确的方向上的刺激。

请求的编辑:

我有 3 个 Controller :

  1. 首页 - 原封不动
  2. 帐户 - 未动过
  3. 属性 - 带默认 MVC CRUD 操作(索引、详细信息、创建、编辑)

它在 IIS 上运行正常,但在 VS 的内部调试 IIS 上运行不正常。

@Html.ActionLink("Properties", "Index", "Properties") 在运行时生成 http://[localhost]:53909/Properties。但是,单击生成的链接会给我一个“‘/’应用程序中的服务器错误。找不到资源。”

PropertiesController.cs(仅索引操作)

public class PropertiesController : Controller
{
private PropertyInfoEntities db = new PropertyInfoEntities();

//
// GET: /Properties/

public ActionResult Index()
{
//Mapper.CreateMap<Property, PropertiesListViewModel>()
//.ForMember(vm => vm.MainImageURL, m => m.MapFrom(u => (u.MainImageURL != null) ? u.MainImageURL : "User" + u.ID.ToString()))
// ;
//List<PropertiesListViewModel> properties =
// Mapper.Map<List<Property>, List<PropertiesListViewModel>>(db.Properties.ToList());
return View(db.Properties.Include(p => p.Currency).Include(p => p.Type).Include(p => p.Province).Include(p => p.Region).Include(p => p.SaleType).Include(p => p.Source).Include(p => p.Town).ToList());
}
}

_Layout.cshtml

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title - My ASP.NET MVC Application</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
<header>
<div class="content-wrapper">
<div class="float-left">
<p class="site-title">@Html.ActionLink("your logo here", "Index", "Home")</p>
</div>
<div class="float-right">
<section id="login">
@Html.Partial("_LoginPartial")
</section>
<nav>
<ul id="menu">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Properties", "Index", "Properties")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
</nav>
</div>
</div>
</header>
....

编辑 2:即使有一个特定的路线,它仍然被忽略

namespace ProjectName
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Properties",
"Properties/{action}/{id}",
new { controller = "Properties", action = "Index", id = UrlParameter.Optional }
);

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}

干杯!

最佳答案

我尝试将 PropertiesController 的名称更改为 Properties1Controller,并且路由非常适合它。经过进一步挖掘,我发现这是因为 Properties is a Windows Reserved Keyword .

无论如何,问题的解决方案:不要使用保留关键字作为 Controller 名称。

奇怪的是,/Properties/Index 的路由完全正常,而/Properties/的路由在生产 IIS 上完全正常,只是不适用于开发。这使得解决问题变得更加困难,但最终还是成功了。

谢谢大家的帮助。

关于c# - 新的 MVC 4 项目。默认路由被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19767972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com