Ich habe eine Ansicht namens Browse.chtml
, in der der Benutzer einen Suchbegriff eingeben oder den Suchbegriff leer lassen kann. Wenn ich den Suchbegriff eingebe, möchte ich die Seite anleiten, http://localhost:62019/Gallery/Browse/{Searchterm}
und wenn nichts eingegeben wird, möchte ich den Browser anleiten http://localhost:62019/Gallery/Browse/Start/Here
.
Wenn ich das versuche, erhalte ich die Fehlermeldung:
Die aktuelle Anforderung für die Aktion 'Durchsuchen' für den Controllertyp 'GalleryController' ist zwischen den folgenden Aktionsmethoden nicht eindeutig: System.Web.Mvc.ActionResult Browse (System.String) für den Typ AutoApp_MVC.Controllers.GalleryController System.Web.Mvc.ActionResult Browse (Int32, System.String) für den Typ AutoApp_MVC.Controllers.GalleryController
Alles, was ich mit MVC mache, ist zum ersten Mal. Ich bin mir nicht sicher, was ich sonst noch versuchen soll.
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);
}
Ich habe dies auch in 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
});
quelle
return View("Browse", summaries);
Ich weiß nicht, wann die Frage gestellt wurde, diese Lösung war verfügbar, aber Sie können verwenden:
Das sollte also für Ihr Problem gut funktionieren:
quelle
Fügen Sie folgenden Code in RouteConfig.cs vor Standardroute
Fügen Sie dem Controller Routenattribute wie folgt hinzu:
quelle
Ich denke, der Punkt ist, dass Sie nicht implizit mit der Anforderungsklasse auf Querystring-Parameter testen müssen.
MVC übernimmt das Mapping für Sie (es sei denn, Sie haben schwerwiegende Änderungen an Ihren MVC-Routen vorgenommen).
Somit ist ein Actionlink-Pfad von
würde Ihrem (Oberflächen-) Controller automatisch mit dem definierten Parameter zur Verfügung stehen:
MVC erledigt die Arbeit.
quelle