场景: - 我有以下模式的网址: -
本地主机:8080 /专辑/
routes.MapRoute(
{
name: "AlbumHome",
url : "Albums/{*albumName}"
defaults: new {controller = "Albums", action="Index", albumName = ""}
}
现在在我的操作中,我从数据库中获取了albumName,现在应该如何在网址中附加albumName。
我希望网址为: -
localhost:8080 / albums / hindi
localhost:8080 /专辑/ kanada
等等。
行动
public ActionResult GetAlbumName()
{
//get the albumName from db
return RedirectToRoute("AlbumHome",albumName);
}
public ActionResult Index(string albumName)
{
return view();
}
如何将此相册名称附加到网址?
答案 0 :(得分:2)
你几乎是对的!
RedirectToRoute
有一个overload,可让您将路线值添加为object
参数。在您的示例中,它看起来像这样:
public ActionResult GetAlbumName()
{
//get the albumName from db
return RedirectToRoute("AlbumHome", new { albumName });
}
您还可以更明确地定义您的路线:
routes.MapRoute(
{
name: "AlbumHome",
url : "Albums/{albumName}"
defaults: new {controller = "Albums", action="Index", albumName = UrlParameter.Optional }
}
答案 1 :(得分:0)
var context = new RequestContext(
new HttpContextWrapper(System.Web.HttpContext.Current),
new RouteData());
var urlHelper = new UrlHelper(context);
var url = urlHelper.Action("albumName", "Albums", null);
return Redirect(url);