新しい MVC 4 プロジェクトを作成し、Database First を使用して EDO.NET Entity Data Model を追加しました。正確な理由はわかりませんが、以前のように正しく機能していないようです。エンティティ クラスを生成するには、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つのコントローラーを持っています:
- ホーム - 手付かず
- アカウント - 手付かず
- プロパティ - デフォルトの MVC CRUD アクション (インデックス、詳細、作成、編集) 付き
IIS でホストされている場合は正常に動作しますが、VS の内部デバッグ IIS では動作しません。
@Html.ActionLink("Properties", "Index", "Properties") は、実行時に http://[localhost]:53909/Properties を生成します。ただし、生成されたリンクをクリックすると、「「/」アプリケーションでサーバー エラーが発生しました。リソースが見つかりません」というメッセージが表示されます。
PropertiesController.cs (Index アクションのみ)
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 }
);
}
}
}
乾杯!