如何在asp.net mvc中的url中追加字符串?

时间:2015-08-02 10:48:09

标签: c# asp.net asp.net-mvc

场景: - 我有以下模式的网址: -

  

本地主机: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();
}

如何将此相册名称附加到网址?

2 个答案:

答案 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);