Question

Bonjour, je suis nouveau chez MVC et je me suis débrouillé sans savoir comment construire des contrôles utilisateur MVC qui ont reçu ViewData. J'espérais que quelqu'un publierait une solution étape par étape sur la façon d'aborder ce problème. Si vous pouviez rendre votre solution très détaillée, cela aiderait grandement.

Désolé d’être aussi discret avec ma question, je voudrais juste préciser que ce que j’essaie ultimement de faire est de passer un id à une méthode actiontrult du contrôleur et de le rendre à un contrôle utilisateur directement à partir du contrôleur lui-même. Je ne sais pas trop comment commencer avec cette approche et je me demande même si cela est possible. Dans mon esprit, cela ressemblera essentiellement à ceci

public ActionResult RTest(int id){
RTestDataContext db = new RTestDataContext();
var table = db.GetTable<tRTest>();
var record = table.SingleOrDefault(m=> m.id = id);

return View("RTest", record);
}

et dans mon contrôle d’utilisateur, je voudrais rendre les objets de cet enregistrement et c’est mon problème.

Était-ce utile?

La solution

Si je comprends votre question, vous essayez de passer ViewData dans le contrôle utilisateur. Un contrôle utilisateur est essentiellement une vue partielle, vous feriez donc ceci:

<% Html.RenderPartial("someUserControl.ascx", viewData); %>

Dans votre contrôle utilisateur, ViewData sera ce que vous avez transmis ...

Autres conseils

OK ici ça va - Nous utilisons les données Json

Dans la page aspx, nous avons un appel ajax qui appelle le contrôleur. Recherchez les paramètres d'option disponibles pour les appels ajax.

url: Ceci appelle la fonction dans la classe. (évidemment) Notre nom de classe est JobController, le nom de la fonction est updateJob et il ne prend aucun paramètre. L'URL supprime le controllerPortion du nom de la classe. Par exemple, pour appeler la fonction updateJob, l'URL serait '/ Job / UpdateJob /'.

var data = {x:1, y:2};
$.ajax({
data: data,
cache: false,
url: '/ClassName/functionName/parameter',
dataType: "json",
type: "post",
success: function(result) {
//do something
},
error: function(errorData) {
alert(errorData.responseText);
}
}
);

Dans la classe JobController:

public ActionResult UpdateJob(string id)
{
   string x_Value_from_ajax = Request.Form["x"];
   string y_Value_from_ajax = Request.Form["y"];
   return Json(dataContextClass.UpdateJob(x_Value_from_ajax, y_Value_from_ajax));
}

Nous avons une page Global.asax.cs qui mappe les appels ajax.

public class GlobalApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("Default",                 // Route name
    "{controller}/{action}/{id}",     // URL with parameters
        new { controller = "EnterTime", action = "Index", id = "" }  // Parameter defaults  (EnterTime is our default controller class, index is our default function and it takes no parameters.)
    );
  }
}

J'espère que cela vous aidera à bien démarrer. Bonne chance

Je suis pratiquement sûr que les données de vue sont accessibles dans les contrôles utilisateur tant que vous étendez System.Web.Mvc.ViewUserControl et le transmettez. J'ai un extrait de code:

<%Html.RenderPartial("~/UserControls/CategoryChooser.ascx", ViewData);%>

et à partir de mon CategoryChooser ViewData est accessible.

Je ne suis pas sûr de bien comprendre votre problème, mais voici ma réponse à la section "Ajout d'un contrôle utilisateur à votre projet ASP.NET MVC".

Dans Visual Studio 2008, vous pouvez choisir Ajouter un élément. Dans les catégories situées à gauche, vous pouvez choisir Visual C # > Web > MVC. Il y a une option MVC View User Control. Sélectionnez-le, choisissez un nom, sélectionnez le gabarit souhaité et lancez-vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top