ASP.NET MVC 1.0 / C#を使用して、クライアント用のヘルプデスクチケットシステムを構築しています。StevenSandersonの「ASP.NETMVCのアプリ領域、Take 2」を実装しましたが、うまく機能しています。
Globabl.asaxページには、次のように定義されたルートがいくつかあります。
public static void RegisterRoutes(RouteCollection routes)
{
// Routing config for the HelpDesk area
routes.CreateArea("HelpDesk", "ProjectName.Areas.HelpDesk.Controllers",
routes.MapRoute(null, "HelpDesk/{controller}/{action}", new { controller = "Ticket", action = "Index" }),
routes.MapRoute(null, "HelpDesk/Ticket/Details/{TicketId}", new { controller = "Ticket", action = "Details", TicketId = "TicketId" })
);
}
したがって、ブラウザのアドレスバーに「 http:// localhost / HelpDesk / Ticket / Details / 12 」と手動で入力すると、期待どおりの結果が得られます。これが私のコントローラーです:
public ActionResult Details(int TicketId)
{
hd_Ticket ticket = ticketRepository.GetTicket(TicketId);
if (ticket == null)
return View("NotFound");
else
return View(ticket);
}
私の見解では:
<%= Html.ActionLink(item.Subject, "Details", new { item.TicketId } )%>
ただし、そのコードは「http:// localhost / HelpDesk / Ticket / Details?TicketId = 12」を生成し、これも期待される結果を返します。私の質問は...
スティーブンサンダーソンのエリアを使用して、「 http:// localhost / HelpDesk / Ticket / Details / 12 」のようなクリーンなURLを作成するActionLinkを定義するにはどうすればよいですか?