0
net mvc 3并试图创建一个博客应用程序。我想有一个包含一个urlheader如URL:在asp.net中自定义urlheader博客
博客/详细信息/第三后
但是,我得到一个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)
这里有些不一致的东西。您在ActionLink中传递了一个'id'参数,但是您的路由定义中没有{{id})占位符(实际上存在 - 在我怀疑您保留的默认路由中,以及与此新路由冲突的路由) 。如果你期望'Blog/Details/Third-post'作为url,给予'id = Model.BlogID'有什么意义?你不想让目标网址成为“Blog/Details/3/Third-post”吗? – 2012-07-28 09:31:23
id是http post详细博客控制器需要获取正确的博客文章 – Tripping 2012-07-28 09:36:11
好吧,然后修复你写下你希望'Blog/Details/Third-post'为url的问题。你想要'Blog/Details/3/Third-post'。 – 2012-07-28 09:36:37