Asp.net mvc ASP.net MVC区域并创建ID为(SEO/clean URL)的ActionLink
我正在使用ASP.NET MVC 1.0/C#为客户构建一个帮助台记录系统。我已经实现了Steven Sanderson的“”,而且效果很好 在我的Globabl.asax页面中,我定义了一些路由:Asp.net mvc ASP.net MVC区域并创建ID为(SEO/clean URL)的ActionLink,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,我正在使用ASP.NET MVC 1.0/C#为客户构建一个帮助台记录系统。我已经实现了Steven Sanderson的“”,而且效果很好 在我的Globabl.asax页面中,我定义了一些路由: public static void RegisterRoutes(RouteCollection routes) { // Routing config for the HelpDesk area routes.CreateArea("HelpDesk", "ProjectName
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" })
);
}
因此,如果我在浏览器地址栏中手动输入“”,就会得到预期的结果。这是我的控制器:
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 } )%>
但该代码生成“”并返回预期结果。我的问题是
当使用Steven Sanderson的创建一个干净的URL时,我如何定义ActionLink,如:“?”试试看
<%= Html.ActionLink(item.Subject, "Details", new { TicketId=item.TicketId } )%>
试试看
试试看
ActionLink方法需要一个字典,其中的键与参数名匹配。(请注意,传递匿名对象很方便)。我相信其他任何东西都会标记到URL的末尾
编辑:这不适用于您的原因是您的第一条路由匹配并优先(控制器和操作),但未定义TicketId参数。您需要切换路线的顺序。你应该总是把最具体的路线放在第一位。试试看
ActionLink方法需要一个字典,其中的键与参数名匹配。(请注意,传递匿名对象很方便)。我相信其他任何东西都会标记到URL的末尾
编辑:这不适用于您的原因是您的第一条路由匹配并优先(控制器和操作),但未定义TicketId参数。您需要切换路线的顺序。你应该总是把最具体的路线放在第一位。我认为Womp已经做到了 哦,当你交换路线时,试试看
routes.MapRoute(null, "HelpDesk/Ticket/Details/{TicketId}", new { controller = "Ticket", action = "Details"})
我认为,TicketId=“id”
把事情搞砸了
希望有帮助
丹我想沃姆普有 哦,当你交换路线时,试试看
routes.MapRoute(null, "HelpDesk/Ticket/Details/{TicketId}", new { controller = "Ticket", action = "Details"})
我认为,TicketId=“id”
把事情搞砸了
希望有帮助
丹