0
我正在通過創建博客應用程序來教導自己的asp .net mvc3。不過,我有 評論上傳的問題。這是一個非常微妙的錯誤,因爲當用戶發表評論時,一切都可以正常工作。但是,帖子的網址發生了變化。添加評論並重定向回博客文章後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
我知道,截至目前,RedirectToAction中沒有任何內容傳遞urlHeader信息。但是,我嘗試了幾件事情,例如:
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
);
}
你能顯示在Global.asax中完整的路線設置?你有其他路線設置? –
根據要求更新 – Tripping
@DarinDimitrov,當您直接在瀏覽器地址欄上顯示其示例時,此路線是否爲「Blog/Details/{id}/{urlHeader}」? –