プロジェクトMVC 5(4.5.1ではなく.NET 4.5)の下でW8.1でVS2013プレビューを使用しており、過去数時間、あらゆる種類のことを試して調査してきましたが、私が得たものが得られないようです行方不明です。
私はフォーラムを構築することで学校のプロジェクトに取り組んでおり、URL を階層的にしたい、つまり
localhost:1234/Forum/Science/Physics/String%20Theory
.
これは RouteConfig です:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{action}/{*title}",
defaults: new { controller = "Home", action = "Index", title = UrlParameter.Optional }
);
}
コントローラ:
public ActionResult Index()
{
return View(db.Categories.Where(x => x.ParentId == null).ToList());
}
public ActionResult Forum(string parentId)
{
return View("Index", db.Categories.Where(x => x.ParentId == parentId));
}
そしてビュー(インデックスページです):
@foreach (var item in Model)
{
<div class="CatLevel0">
<h2>@Ajax.ActionLink(item.Title, "Forum", new { parentId = item.Id, title = item.Title }, new AjaxOptions() { HttpMethod = "POST" })</h2>
<h4>@Html.DisplayFor(modelItem => item.Description)</h4>
</div>
}
ここに問題があります。上記のリンク (例: "Science") は次の場所に移動します:
"http://localhost:1234/Forum/Science?parentId=b8bd9ded-7284-462d-b0cc-d8ce09717b8a"
、および "Science" に転送されて "Social Sciences" にリダイレクトされた後の 2 番目のレベル:
"http://localhost:1234/Forum/Social%20Sciences?parentId=2a9f1c24-c6d4-44ab-b000-3268f38794f3"
.
そのため、クエリ文字列で冗長な GUID を取得するだけでなく (これは望ましくありません!)、「~/Forum/Science/Social%20Sciences」の前駆体「Science」も失われます。
他のいくつかのSOの質問では、Ajax.ActionLinkにはjqueryの控えめなajaxが必要であることが指摘されました.Chrome Developer Toolsのネットワークタブで判断すると、私の側では正しくレンダリングされます。
更新:次を使用して、@TimothyWaltersが言及した問題を修正できました:
コントローラ:
public ActionResult Forum(string parentId, string title)
{
TempData["fullTitle"] = title + "/";
return View("Index", db.Categories.Where(x => x.ParentId == parentId));
}
意見:
@foreach (var item in Model)
{
<div class="CatLevel0">
@*<h2>@Html.ActionLink(item.Title, "Forum", new { parentId = item.Id, title = item.Title })</h2>*@
<h2>@Ajax.ActionLink(item.Title, "Forum", new { parentId = item.Id, title = TempData["fullTitle"] + item.Title }, new AjaxOptions() { HttpMethod = "POST" })</h2>
<h4>@Html.DisplayFor(modelItem => item.Description)</h4>
</div>
}
これhttp://localhost:5465/Forum/Science/Social%20Sciences?parentId=2a9f1c24-c6d4-44ab-b000-3268f38794f3
で、クエリ文字列の GUID の問題が処理されます。
Update2 : うーん - 今私はこれを得る: http://localhost:5465/Forum/Science/Social%20Sciences/Science/Social%20Sciences?parentId=2a9f1c24-c6d4-44ab-b000-3268f38794f3
. . . .