0

net mvc 3 とブログ アプリケーションを作成しようとしています。次のような urlheader を含む URL が必要です。

ブログ/詳細/サードポスト

ただし、次の URL を取得しています。

Blog/Details/3?urlHeader=Third-post

私は何を間違っていますか?

私のブログコントローラーは次のとおりです。

public ViewResult Details(int id, string urlHeader)
{
    var blogs = blogrepository.GetBlog(id);
    var recentblogs = blogrepository.FindRecentBlogs(5);
    var archivelist = blogrepository.ArchiveList();
    BlogDetailsViewModels viewModel = new BlogDetailsViewModels { Blog = blogs, RecentBlogs = recentblogs, ArchiveList = archivelist };
    return View(viewModel);
}

ルートメソッドは次のとおりです。

 routes.MapRoute(
        "BlogDetail", // Route name
        "Blog/Details/{urlHeader}", // URL with parameters
        new { controller = "Blog", action = "Details" }, // Parameter defaults
        new { urlHeader = "" } // Parameter constraints
    );

リンクは次のとおりです。

@Html.ActionLink(Model.Title , "Details", "Blog", new { id = Model.BlogID, urlHeader = Model.UrlHeader }, null)
4

1 に答える 1

0

次のルートを使用できます。

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Blog",
        "Blog/Details/{id}/{urlHeader}",
        new { controller = "Blog", action = "Details", urlHeader = UrlParameter.Optional },
        new { id = @"\d+" }
    );

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}
于 2012-07-28T09:37:32.157 に答える