2017-06-27 5 views
0

Ich habe folgende Möglichkeiten:.NET MVC Routing in RedirectToAction()

return RedirectToAction("Index", "PATIENT", new { Patient = v }); 

("v" ist eine Instanz einer Patientenklasse)

Ich hoffe, dass ich im Wesentlichen eine Instanz am Transport "v" der Klasse "Patient" zum "PatientController"?

Ich möchte jetzt auf die Daten in "v" zugreifen.

Ist es richtig, innen PATIENTController zu machen:

public IActionResult Index(Patient p){} 

Und jetzt in der Funktionskörper ich vollen Zugriff auf „v“ haben von den anderen Controller ??

edit: hier ist das Modell Code

public class Patient 
{ 

    public ObjectId _id { get; set; }//For MongoDB 
    public string Name { get; set; } 
    public int Age { get; set; } 
    public List<Encounter> Encounters { get; set; } 

    public Patient() { } 
    public Patient(ObjectId id, string name, int age) { 
     _id = id; 
     Name = name; 
     Age = age; 
    } 
} 
+2

, die nur funktionieren würde, wenn 'Patient' einfach propertes enthält (wenn alle Eigenschaften komplexer Objekte oder Sammlungen sind, wird es nicht), und Sie riskieren Überschreiten der Abfragezeichenfolgengrenze und Auslösen einer Ausnahme. Aber der richtige Code wäre 'return RedirectToAction (" Index "," PATIENT ", v);' und 'public IActionResult Index (Patient p) {}' aber der korrekte Ansatz besteht darin, die ID des Modells zu übergeben und sie erneut zu bekommen in der GET-Methode. –

+0

Okay danke, also wenn ich es richtig mache, dann eine Zeichenfolge namens "id", dann RedirectToAction ("Index", "PATIENT", id); und Index (String-ID) {} ?? –

+0

Zeigen Sie den Code des Patientenmodells. –

Antwort

0

entfernen Controller sufix in Ihrem Code.

return RedirectToAction("Index", "PATIENT", new { Patient = v }); 

oder

return RedirectToAction("Index", new { Patient = v }); 

Der Patient Wert hat als Query-String-Werte senden.

Wenn der obige Code nicht funktioniert. Sie verwenden Tempdata. Und weisen Sie den Wert zu Tempdata.

TempData["patient"] = v 

Und dann Zugriff auf die TempData in Ihrem Index-Methode

Patient pt = (Patient)TempData["patient"]; 
+0

Keine Antwort auf eine Frage, die OP beantwortet zu haben scheint. – nbokmans