J'essaie de comprendre comment passer l'objet modèle de contrôleur pour afficher dans un scénario suivant:MVC modèle d'objet passe du contrôleur pour voir
<% Html.Action("GetRequest", "The_Controller", new { requestId = 12 }); %>
<% Html.RenderPartial("Request", ViewData.Model); %>
L'action devrait, et il le fait, appeler le contrôleur de méthode qui recherche l'objet Request dans le référentiel DB et renvoie un objet Request.
La vue partielle appelée Request doit recevoir l'objet de requête et l'afficher.
Le problème est que le ViewData.Model est toujours nul ?!
J'ai essayé de le comprendre, mais sans succès :(
La raison de ce comportement est que je dois afficher une vue partielle à l'intérieur de dialogue modale basée sur la valeur requestId du jQuery fourni par le jqGrid . Je suis arrivé au point où j'ouvre la boîte de dialogue mais ne peut pas obtenir cette instance de l'objet modèle
Toute aide est appréciée
la solution -.. Avec l'aide de Nick Larsen et Darin Dimitrov
Le contrôleur:
[AcceptVerbs(HttpVerbs.Post)]
[Authorize]
public PartialViewResult GetRequest(string requestId)
{
Request request = DatabaseContext.GetRequest(Convert.ToInt32(requestId)) as Request;
return PartialView("Request", request);
}
Javascript de la vue:
function OpenRequest(requestId) {
var methodName = '<%= Url.Content("~")%>' + 'Controller/GetRequest/';
var dataType = "html";
var postData = { requestId: requestId };
var contentType = "application/x-www-form-urlencoded"; ;
var request = ContactServer(methodName, postData, dataType, contentType);
$("#dialog").html(request);
$("#dialog").dialog({ html: request, title: 'Request details...', width: 800, height: 600, modal: true, zindex: 300000, show: 'scale', resizable: false });
}
Je vois votre point, cependant la vue initiale affiche le jQGrid, par conséquent je ne peux pas charger toutes les demandes. L'exemple de code utilisait une valeur codée en dur, c'est-à-dire requestId = 12. En réalité, la valeur va être transmise via l'événement double-clic de jQGrid, qui ouvrira à son tour un dialogue modal, qui sera à son tour injecté avec l'instruction <% RenderPartial ...%>, qui devrait afficher les données désirées dans un dialogue modal. Mon problème tourne autour de comment passer un objet d'un contrôleur à la vue partielle d'une manière dynamique :) – bignermo
Oh, j'ai oublié, y at-il un moyen d'accéder à ce handle nouvellement créé? – bignermo
Il est probablement mais vous ne devriez probablement pas. Si vous utilisez jQGrid, chargez les données du client sur 'jQuery(). Ready (...);'. Vous n'avez alors plus besoin d'utiliser cette méthode. Voici une tonne d'exemples: http://www.trirand.com/blog/jqgrid/jqgrid.html –