Ich möchte wissen, es gibt jede Technik, so dass wir Model
als Parameter in RedirectToAction
übergeben
Zum Beispiel:
public class Student{
public int Id{get;set;}
public string Name{get;set;}
}
Regler
public class StudentController : Controller
{
public ActionResult FillStudent()
{
return View();
}
[HttpPost]
public ActionResult FillStudent(Student student1)
{
return RedirectToAction("GetStudent","Student",new{student=student1});
}
public ActionResult GetStudent(Student student)
{
return View();
}
}
Meine Frage - Kann ich ein Studentenmodell in RedirectToAction bestehen?
Stellt eine Gruppe von Daten dar, die nur von einer Anforderung an die .__ bestehen bleiben. Nächster
[HttpPost]
public ActionResult FillStudent(Student student1)
{
TempData["student"]= new Student();
return RedirectToAction("GetStudent","Student");
}
[HttpGet]
public ActionResult GetStudent(Student passedStd)
{
Student std=(Student)TempData["student"];
return View();
}
Alternativer Weg Übergeben Sie die Daten mithilfe der Abfragezeichenfolge
return RedirectToAction("GetStudent","Student", new {Name="John", Class="clsz"});
Dadurch wird eine GET-Anforderung wie Student/GetStudent?Name=John & Class=clsz
generiert.
Stellen Sie sicher, dass die Methode, zu der Sie umleiten möchten, mit
[HttpGet]
als .__ dekoriert ist. Die obige RedirectToAction gibt eine GET-Anforderung mit dem http-Status .__ aus. Code 302 gefunden (übliche Methode zur URL-Weiterleitung)
Rufen Sie einfach die Aktion auf, ohne dass redirect to action
oder das Schlüsselwort new
für das Modell benötigt wird.
[HttpPost]
public ActionResult FillStudent(Student student1)
{
return GetStudent(student1); //this will also work
}
public ActionResult GetStudent(Student student)
{
return View(student);
}
Ja, Sie können das von Ihnen gezeigte Modell mit übergeben
return RedirectToAction("GetStudent", "Student", student1 );
vorausgesetzt, student1
ist eine Instanz von Student
die folgende URL wird generiert (vorausgesetzt, Sie verwenden die Standardrouten und der Wert von student1
ist ID=4
und Name="Amit"
).
.../Student/GetStudent/4?Name=Amit
Intern erstellt die RedirectToAction()
-Methode eine RouteValueDictionary
, indem der .ToString()
-Wert jeder Eigenschaft im Modell verwendet wird. Das Binden funktioniert jedoch nur, wenn alle Eigenschaften im Modell einfache Eigenschaften sind und es fehlschlägt, wenn Eigenschaften komplexe Objekte oder Auflistungen sind, da die Methode keine Rekursion verwendet. Wenn zum Beispiel Student
eine Eigenschaft List<string> Subjects
enthält, führt diese Eigenschaft zu einem Abfragezeichenfolgenwert von
....&Subjects=System.Collections.Generic.List'1[System.String]
und die Bindung würde fehlschlagen und diese Eigenschaft wäre null
[HttpPost]
public async Task<ActionResult> Capture(string imageData)
{
if (imageData.Length > 0)
{
var imageBytes = Convert.FromBase64String(imageData);
using (var stream = new MemoryStream(imageBytes))
{
var result = (JsonResult)await IdentifyFace(stream);
var serializer = new JavaScriptSerializer();
var faceRecon = serializer.Deserialize<FaceIdentity>(serializer.Serialize(result.Data));
if (faceRecon.Success) return RedirectToAction("Index", "Auth", new { param = serializer.Serialize(result.Data) });
}
}
return Json(new { success = false, responseText = "Der opstod en fejl - Intet billede, manglede data." }, JsonRequestBehavior.AllowGet);
}
// GET: Auth
[HttpGet]
public ActionResult Index(string param)
{
var serializer = new JavaScriptSerializer();
var faceRecon = serializer.Deserialize<FaceIdentity>(param);
return View(faceRecon);
}