Mam wywoływany widok Browse.chtml
, w którym użytkownik może wprowadzić wyszukiwany termin lub pozostawić wyszukiwany termin pusty. Wprowadzając wyszukiwane hasło, chcę skierować stronę do, http://localhost:62019/Gallery/Browse/{Searchterm}
a gdy nic nie zostanie wprowadzone, chcę skierować przeglądarkę do http://localhost:62019/Gallery/Browse/Start/Here
.
Kiedy próbuję tego, pojawia się błąd:
Bieżące żądanie akcji „Przeglądaj” na kontrolerze typu „GalleryController” jest niejednoznaczne między następującymi metodami akcji: System.Web.Mvc.ActionResult Browse (System.String) na typie AutoApp_MVC.Controllers.GalleryController System.Web.Mvc.ActionResult Browse (Int32, System.String) w typie AutoApp_MVC.Controllers.GalleryController
Wszystko, co robię z MVC, robię po raz pierwszy. Nie wiem, czego jeszcze 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 to również 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
});
źródło
return View("Browse", summaries);
Nie wiem, kiedy zadano pytanie, to rozwiązanie było dostępne, ale możesz użyć:
Więc to powinno działać dobrze dla twojego problemu:
źródło
Dodaj następujący kod w RouteConfig.cs przed domyślną trasą
I dodaj atrybuty trasy w kontrolerze, takie jak:
źródło
Myślę, że chodzi o to, że nie trzeba niejawnie testować parametrów zapytań przy użyciu klasy żądania.
MVC wykonuje mapowanie za Ciebie (chyba że wprowadziłeś poważne zmiany w trasach MVC).
Tak więc ścieżka actionlink do
byłby automatycznie dostępny dla twojego (powierzchniowego) kontrolera ze zdefiniowanym parametrem:
MVC wykonuje całą pracę.
źródło