私はブログアプリケーションを作成することにより、自分自身にasp.netmvc3を教えています。ただし、コメントのアップロードに問題があります。ユーザーがコメントを残したときにすべてが機能するという点で、これは非常に微妙なエラーです。ただし、投稿のURLは変更されます。
したがって、ブログ投稿にはURLがあります
http://localhost:49175/Blog/Details/3/Third-post
これは、次のURLルートマップによって生成されます。
routes.MapRoute(
                "BlogDetail", // Route name
                "Blog/Details/{id}/{urlHeader}", // URL with parameters
                new { controller = "Blog", action = "Details", id = UrlParameter.Optional, urlHeader = UrlParameter.Optional } // Parameter defaults
            );
これで、ユーザーがコメントを残すと、コメントコントローラーに移動します。
[HttpPost]
    public ActionResult Create(BlogDetailsViewModels viewModel)
    {
        if (ModelState.IsValid)
        {
            try 
            {
                blogrepository.Add(viewModel.Comment);
                return RedirectToAction("Details", "Blog", new { id = viewModel.Comment.BlogID });
            }
            catch (DataException)
            {
                ModelState.AddModelError("", "Unable to save comment. Try again, and if the problem persits then contact administrator.");
            }
        }
        // If we got this far, something failed, redisplay form
        return RedirectToAction("Details", "Blog", new { id = viewModel.Comment.BlogID });
    }
}
ただし、誰かがコメントを残すと、彼はにリダイレクトされます
http://localhost:49175/Blog/Details/3
私は知っています、今のところ、urlHeader情報を渡すRedirectToActionには何もありません。しかし、私は次のようないくつかのことを試しました:
return RedirectToAction("Details", "Blog", new { id = viewModel.Comment.BlogID, urlHeader = viewModel.Blog.UrlHeader });
ただし、機能していないようです。
これはブログの詳細コントローラーです。
    //
    // GET: /Blog/Details/5
    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);
    }
私はこれで何日も立ち往生しています。
-要求に応じたフルルート方式-
public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            "BlogDetail", // Route name
            "Blog/Details/{id}/{urlHeader}", // URL with parameters
            new { controller = "Blog", action = "Details", id = UrlParameter.Optional, urlHeader = UrlParameter.Optional } // Parameter defaults
        );
        routes.MapRoute(
            "BlogArchive", // Route name
            "Blog/{year}/{month}", // URL with parameters
            new { controller = "Blog", action = "Archive" }, // Parameter defaults
            new { year = @"\d{4}", month = @"\d{1,2}", } // Parameter constraints
        );
        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );
    }