Sollten Sie unter ASP.NET MVC QueryString-Parameter genauso abrufen wie in ASP.NET WebForms? oder wird die [AcceptVerbs(HttpVerbs.Get)]
deklaration irgendwie benutzt?
.net
asp.net
asp.net-mvc
BuddyJoe
quelle
quelle
Ich denke, was Sie suchen, ist
Request.QueryString["QueryStringName"]
und Sie können in Ansichten darauf zugreifen, indem Sie hinzufügen
@
Schauen Sie sich jetzt mein Beispiel an. Ich habe mit QueryString eine URL generiert
var listURL = '@Url.RouteUrl(new { controller = "Sector", action = "List" , name = Request.QueryString["name"]})';
Der listURL-Wert ist
/Sector/List?name=value'
und wann
queryString
ist leerlistURL Wert ist
/Sector/List
quelle
Sie können
Request.QueryString
Sammlungen immer wie Webformulare verwenden, MVC kann sie jedoch auch verarbeiten und als Parameter übergeben. Dies ist der vorgeschlagene Weg, da dies einfacher ist und der Eingabedatentyp automatisch überprüft wird.quelle
Ich empfehle, die ValueProvider-Eigenschaft des Controllers zu verwenden, ähnlich wie UpdateModel / TryUpdateModel, um die erforderlichen Routen-, Abfrage- und Formularparameter zu extrahieren. Dadurch wird verhindert, dass Ihre Methodensignaturen möglicherweise sehr groß werden und häufigen Änderungen unterliegen. Dies erleichtert auch das Testen ein wenig, da Sie dem Controller während Unit-Tests einen ValueProvider zur Verfügung stellen können.
quelle
Tatsächlich können Sie Abfragezeichenfolgen in MVC auf zwei Arten erfassen .....
public ActionResult CrazyMVC(string knownQuerystring) { // This is the known query string captured by the Controller Action Method parameter above string myKnownQuerystring = knownQuerystring; // This is what I call the mysterious "unknown" query string // It is not known because the Controller isn't capturing it string myUnknownQuerystring = Request.QueryString["unknownQuerystring"]; return Content(myKnownQuerystring + " - " + myUnknownQuerystring); }
Dies würde beide Abfragezeichenfolgen erfassen ... zum Beispiel:
/CrazyMVC?knownQuerystring=123&unknownQuerystring=456 Output: 123 - 456
Fragen Sie mich nicht, warum sie es so gestaltet haben. Sinnvoller wäre es, wenn sie das gesamte Controller-Aktionssystem für einzelne Abfragezeichenfolgen ausschalten und nur eine erfasste dynamische Liste aller Zeichenfolgen / codierten Dateiobjekte für die URL durch URL-Formularcodierung zurückgeben würden, sodass Sie problemlos auf alle in einem Aufruf zugreifen können . Vielleicht kann jemand hier das demonstrieren, wenn es möglich ist?
Für mich macht es keinen Sinn, wie Controller Abfragezeichenfolgen erfassen, aber es bedeutet, dass Sie mehr Flexibilität beim Erfassen von Abfragezeichenfolgen haben, als sie Ihnen sofort beibringen. Also wählen Sie Ihr Gift ... beide funktionieren gut.
quelle