Маршрутизация URL: Как мне использовать строку в качестве моего идентификатора? - PullRequest
4 голосов
/ 21 июля 2011

Я хотел бы получить строку в качестве идентификатора в URL. Вот пример:

http://www.example.com/Home/Portal/Fishing

Я бы хотел, чтобы у меня была Рыбалка. Но я не могу добиться этого с помощью следующего кода:

Код от моего контроллера:

public ActionResult Portal(string name)
{
    // some code
    ViewData["Portal Name"] = name;
}

Код от Global.asax.cs:

  routes.MapRoute(
  "Default", // Route name
  "{controller}/{action}/{id}", // URL with parameters
  new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
  );

1 Ответ

8 голосов
/ 21 июля 2011

Просто измените аргумент на id:

public ActionResult Portal(string id)
{
    // some code
    ViewData["Portal Name"] = id;
}

Аргумент будет связан, если он будет иметь то же имя, что и маркер значения маршрута.Таким образом, альтернативный подход состоял бы в том, чтобы сохранить аргумент с именем name и изменить маршрут:

public ActionResult Portal(string name)
{
    // some code
    ViewData["Portal Name"] = name;
}

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{name}", // URL with parameters
    new { controller = "Home", action = "Index", name = UrlParameter.Optional } // Parameter defaults
);

Я бы выбрал использование id, так как это более стандартный подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...