Mam widok o nazwie Browse.chtml
, w którym użytkownik może wpisać szukany termin lub pozostawić puste pole wyszukiwania. Podczas wpisywania wyszukiwanego hasła chcę skierować stronę na adres http://localhost:62019/Gallery/Browse/{Searchterm}
, a gdy nic nie zostanie wprowadzone, chcę skierować przeglądarkę na stronę http://localhost:62019/Gallery/Browse/Start/Here
.Routing: bieżące żądanie działania [...] jest niejednoznaczne między następującymi metodami działania
Kiedy próbuję to pojawia się błąd:
The current request for action 'Browse' on controller type 'GalleryController' is ambiguous between the following action methods: System.Web.Mvc.ActionResult Browse(System.String) on type AutoApp_MVC.Controllers.GalleryController System.Web.Mvc.ActionResult Browse(Int32, System.String) on type AutoApp_MVC.Controllers.GalleryController
Wszystko robię z MVC jest po raz pierwszy. Nie jestem pewien, co jeszcze można spróbować w tym momencie.
public ActionResult Browse(string id)
{
var summaries = /* search using id as search term */
return View(summaries);
}
public ActionResult Browse(string name1, string name2)
{
var summaries = /* default list when nothing entered */
return View(summaries);
}
Mam również ten w Global.asax.cs:
routes.MapRoute(
"StartBrowse",
"Gallery/Browse/{s1}/{s2}",
new
{
controller = "Gallery",
action = "Browse",
s1 = UrlParameter.Optional,
s2 = UrlParameter.Optional
});
routes.MapRoute(
"ActualBrowse",
"Gallery/Browse/{searchterm}",
new
{
controller = "Gallery",
action = "Browse",
searchterm=UrlParameter.Optional
});
Czy muszę zatem utworzyć nowy widok w powyższym przykładzie? Wygląda na to, że nie pomaga użycie znacznika ActionName, ponieważ myślę, że działa tylko po to, aby zmienić nazwy wszystkich metod działania (nie można ich zachować jednocześnie). Dobrze wiedzieć, jak działa MVC. Dzięki. – Dave
Nie, nie trzeba tworzyć nowych widoków. Nadal możesz użyć tego samego widoku dla obu działań. Wystarczy przekazać nazwę widoku jako pierwszy argument do 'return View (" Browse ", podsumowania);' – danludwig
Świetnie, dziękuję. – Dave