0

我正在尝试为博客实现一些路由我希望使用多个参数显示 url,但是我不断收到 500 个网络错误的负载,并且当我获得所需的路由时,它似乎开始在不同的地方寻找 jquery 和图像我想。

这里是路线

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
    "Events",
    "Post/{action}/{id}/{categoryName}/{blogTitle}",
    new { controller = "Post", action = "Detail", id = "", 
          categoryName = "", blogTitle = "" }
);

这是控制器

public ActionResult Details(int id, string categoryName, string blogTitle)
{
    SitePosts posts = new SitePosts();
    Post post = posts.GetPost(id);

    ViewBag.IsAdmin = IsAdmin;
    return View(post);
}

这是我在 cshtml 剃须刀助手中使用的链接

<a href="@Href("~/Post/Details/" + post.ID + "/" + post.Category.CategoryName + "/" + post.Title)">

如果我重定向到操作返回 RedirectToAction("Details", "Post", new { id = uid, categoryName = post.Category.CategoryName, blogTitle = UrlEncoder.ToFriendlyUrl(post.Title) });

请,我不知道为什么会这样

4

1 回答 1

0

尝试使用 Html ActionLink 帮助程序,而不是自己创建它。此外,您可以调整路由表并省略您传递的值,您不需要使用 = "" 语法在路由中声明这些值,只需将它们留在路由表达式中即可。

路由表

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
    "Events",
    "Post/Detail/{id}/{categoryName}/{blogTitle}",
    new { controller = "Post", action = "Detail" }
);

查看 - 创建链接

    @Html.ActionLink("DisplayText", "Detail", new{controller="Post", id = post.ID,
 categoryName=post.Category.CategoryName, blogTitle = post.Title})
于 2012-09-02T23:14:43.493 回答