2017-12-12 4 views
2

ich eine grundlegende Sortierung implementieren zu verstecken - Filtration mitist es eine Möglichkeit, eine Abfrage-Zeichenfolge aus zeigt auf der Suche und Filter mit asp.net MVC

den Index-Code in Controller Sortierung

public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page) 
     { 
      ViewBag.CurrentSort = sortOrder; 
      ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : ""; 
      ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date"; 

      if (searchString != null) 
      { 
       page = 1; 
      } 
      else 
      { 
       searchString = currentFilter; 
      } 

      ViewBag.CurrentFilter = searchString; 

      var students = from s in db.Students 
          select s; 
      if (!String.IsNullOrEmpty(searchString)) 
      { 
       students = students.Where(s => s.LastName.Contains(searchString) 
             || s.FirstMidName.Contains(searchString)); 
      } 
      switch (sortOrder) 
      { 
       case "name_desc": 
        students = students.OrderByDescending(s => s.LastName); 
        break; 
       case "Date": 
        students = students.OrderBy(s => s.EnrollmentDate); 
        break; 
       case "date_desc": 
        students = students.OrderByDescending(s => s.EnrollmentDate); 
        break; 
       default: // Name ascending 
        students = students.OrderBy(s => s.LastName); 
        break; 
      } 

      int pageSize = 3; 
      int pageNumber = (page ?? 1); 
      return View(students.ToPagedList(pageNumber, pageSize)); 
     } 

der Code enter image description here

gut funktioniert enter image description here

, was ich fragen, ist es eine Möglichkeit, das gleiche zu implementieren Code, ohne den Abfrageparameter dem Endbenutzer wie in Bildern gezeigt anzuzeigen.

ist es verfügbar, um diesen Parameter mit etwas wie Ansicht Modell - Formularsammlung oder routenbasiert zu verstecken - und gibt es Probleme im Zusammenhang mit Sicherheit mit dieser Art der Arbeit mit Abfragezeichenfolge oder nicht - Beachten Sie, dass dieses Beispiel ein ist nur eine Demo zu was ich tun möchte mit Contoso Universität (Microsoft Demo) und sicher in diesem Kontext muss ich nicht eine Abfrage Zeichenfolge verstecken, aber in einem anderen Kontext (mit ado.net gespeicherten Prozedur) kann einige Datenbankarchitektur zeigen -

+0

Sie ein Modell Bindemittel mit einer Reihe von mit gedacht? – maximdumont

+0

Sie können den überflüssigen Teil der Abfragezeichenfolge über jQuery entfernen, nachdem die Seite –

+0

geladen hat. Wenn ein Snippet oder ein Code folgen würde, wäre das ein guter Startpunkt, danke – user4833581

Antwort

1
  1. Nicht jede Abfragezeichenfolge verursacht Sicherheitsverletzungen. Sie müssen festlegen, welche sensiblen Daten in der Abfragezeichenfolge nicht angezeigt werden sollen.
  2. Wenn Sie ausblenden möchten, müssen Sie "POST" anstelle von "GET" verwenden. Mit Paket-Sniffing-Tools wie Fiddler oder den Debugging-Tools von Browsern sind die Abfrageparameter jedoch weiterhin erkennbar.
  3. Vorsicht vor SQL-Injection, wenn Sie einfach eine SQL-Anweisung im Code erstellen. Zum Beispiel könnte jemand übergeben "; Drop Tabelle xx;" als Abfragezeichenfolge.
  4. Query-String kann verschlüsselt werden - https://www.aspsnippets.com/Articles/Encrypt-and-Decrypt-QueryString-Parameter-Values-in-ASPNet-using-C-and-VBNet.aspx
+0

Haben Sie einen Grund ohne Grund. Ich hoffe jedoch, dass meine Bemühungen für jemanden hilfreich sind. –

+0

Ich schätze deine Mühe, ich habe deine Antwort nicht abgelehnt. Da es mir hilft, habe ich es upvoted, um den Downvote gleich – user4833581

+0

Die Abfragezeichenfolge ist der Wert, den der Benutzer in das Textfeld eintippte - es gibt nichts "Sensitives" darüber. OP kann keinen POST verwenden. Es gibt hier keine "SQL-Injektion" (sie verwendet EF). Und das Verschlüsseln macht keinen Sinn (und wäre sowieso nicht möglich). Nichts, was Sie hier gesagt haben, hat etwas mit der Frage von OP zu tun. –

Verwandte Themen