Je veux savoir, il existe n'importe quelle technique pour pouvoir passer Model
en tant que paramètre dans RedirectToAction
Par exemple:
public class Student{
public int Id{get;set;}
public string Name{get;set;}
}
Manette
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();
}
}
Ma question - Puis-je passer modèle d'élève dans RedirectToAction?
Utilisation de TempData
Représente un ensemble de données qui ne persiste que d'une requête au suivant
[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();
}
Autre manière Transmettre les données en utilisant la chaîne de requête
return RedirectToAction("GetStudent","Student", new {Name="John", Class="clsz"});
Cela générera une requête GET telle que Student/GetStudent?Name=John & Class=clsz
Assurez-vous que la méthode que vous souhaitez rediriger est décorée avec
[HttpGet]
en tant que RedirectToAction ci-dessus va émettre une requête GET avec le statut http code 302 trouvé (moyen courant d'effectuer une redirection d'URL)
Appelez simplement l'action inutile de redirect to action
ou le mot clé new
pour le modèle.
[HttpPost]
public ActionResult FillStudent(Student student1)
{
return GetStudent(student1); //this will also work
}
public ActionResult GetStudent(Student student)
{
return View(student);
}
Oui, vous pouvez transmettre le modèle que vous avez montré en utilisant
return RedirectToAction("GetStudent", "Student", student1 );
en supposant que student1
est une instance de Student
qui générera l'URL suivante (en supposant que vous utilisiez les routes par défaut et la valeur de student1
sont ID=4
et Name="Amit"
)
.../Student/GetStudent/4?Name=Amit
En interne, la méthode RedirectToAction()
génère une RouteValueDictionary
en utilisant la valeur .ToString()
de chaque propriété du modèle. Cependant, la liaison ne fonctionnera que si toutes les propriétés du modèle sont des propriétés simples et si des propriétés sont des objets ou des collections complexes, car la méthode n'utilise pas de récursion. Si, par exemple, Student
contenait une propriété List<string> Subjects
, cette propriété aurait pour résultat une valeur de chaîne de requête de
....&Subjects=System.Collections.Generic.List'1[System.String]
et la liaison échouerait et cette propriété serait 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);
}