27 Stimmen

Übergabe mehrerer Parameter an Controller in ASP.NET MVC; außerdem Generierung von On-the-Fly-Abfragen in LINQ-to-SQL

Ich arbeite an einem grundlegenden Issue Management System, um ASP.NET MVC zu lernen. Ich habe es bekommen und läuft zu einem ziemlich anständigen Niveau, aber ich habe in ein Problem laufen.

Ich habe einen Controller namens Issue mit einer Ansicht namens Open. /Issue/Open listet alle offenen Probleme auf, die derzeit im System protokolliert sind. Ich habe eine Route wie folgt definiert:

    routes.MapRoute( 
        "OpenSort",                                                         // Route name
        "Issue/Open/{sort}",                                                // URL with parameters
        new { controller = "Issue", action = "Open", sort = "TimeLogged" }  // Parameter defaults
    );

Dies funktioniert gut so weit, mit dem folgenden Code in IssueController.cs:

public ActionResult Open(string sort)
{            
    var Issues = from i in db.Issues where i.Status == "Open" orderby i.TimeLogged ascending select i;

    switch (sort)
    {
        case "ID":
            Issues = from i in db.Issues where i.Status == "Open" orderby i.ID ascending select i;
            break;

        case "TimeLogged":
            goto default;

        case "Technician":
            Issues = from i in db.Issues where i.Status == "Open" orderby i.Technician ascending select i;
            break;

        case "Customer":
            Issues = from i in db.Issues where i.Status == "Open" orderby i.Customer ascending select i;
            break;

        case "Category":
            Issues = from i in db.Issues where i.Status == "Open" orderby i.Category ascending select i;
            break;

        case "Priority":
            Issues = from i in db.Issues where i.Status == "Open" orderby i.Priority ascending select i;
            break;

        case "Status":
            Issues = from i in db.Issues where i.Status == "Open" orderby i.Status ascending select i;
            break;

        default:
            break;
    }            

    ViewData["Title"] = "Open Issues";
    ViewData["SortID"] = sort.ToString();

    return View(Issues.ToList());
}

Dies funktioniert gut (obwohl ich mich frage, ob es einen besseren Weg gibt, meine Definition der Abfrage als einen Schalter zu behandeln?), aber jetzt möchte ich in der Lage sein, zwei Dinge in der Ansicht Offene Fragen zu tun:

  1. Sortieren nach einer der Rubriken - OK
  2. Filter nach bestimmten Rubriken (Techniker, Kunde, Kategorie, Priorität, Status) - ?

Ich kann nicht herausfinden, wie ich zwei Parameter an den Controller übergebe, damit ich meine Abfragen organisieren kann. Ich habe auch gerade realisiert, dass, es sei denn, ich herausfinden, wie meine Abfragen on the fly zu generieren ich gehen, um (Anzahl von Sortieroptionen) * (Anzahl von Filteroptionen) in meinem Schalter benötigen.

Kann mir jemand den richtigen Weg weisen? Prost!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X