Проблема в том, что MVC Routing Engine не может определить разницу между: -
1) Индекс вызова ()
и
2) Индекс вызова (строковый тег) с тегом = ноль
Вот почему говорится, что запрос неоднозначен.
Вы можете просто сделать: -
public ActionResult Index(string tag)
{
if(String.IsNullOrEmpty(tag))
{
// index code goes here
return View("Index");
}
else
{
// code to handle filtered view goes here
return View("Tag");
}
}
или вы можете принудительно задать параметр с помощью пользовательского атрибута: -
Неоднозначные методы действия ASP.NET MVC
или вы можете настроить маршруты так, чтобы Альбомы и Альбомы? FilterTag = X явно переходили к различным действиям (кстати, я бы порекомендовал "Альбомы" и "Альбомы / Х"): -
routes.MapRoute("AlbumsIndex", "Albums",
new { controller = "Albums", action = "Index" });
routes.MapRoute("AlbumsTag", "Albums/{tag}",
new { controller = "Albums", action = "Tag", tag = "" });
routes.MapRoute("Default", "{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" );
и
public ActionResult Index() { ... }
public ActionRestlt Tag(string tag) { ... }