Question

Je me demande, est-il un équivalent des composants Monorail Voir pour Asp.Net MVC?

Ce que je suis en train de faire est de rendre une interface complexe qui dépend d'une classe, donc dire que nous sommes dans une vue de la liste, je veux passer un objet à cet équivalent ViewComponent et qu'il prendra l'objet en tant que paramètre et rendre l'interface complexe pour moi de me permettre de faire d'autres choses dans la vue. Quelle serait la meilleure façon de le faire dans Asp.Net MVC?

Comme il est une interface utilisateur complexe Je préférerais écrire une fois, d'où les modèles ne sont pas vraiment la façon dont je voudrais aller, car cela signifie que je vais avoir des problèmes de maintenabilité.
Certaines options que j'ai vu (et je suis sur le point de commencer à essayer) sont:

  • Html.RenderAction dans l'avenir
  • Subcontroller

Cependant, je voudrais savoir s'il y a quelque chose d'autre ou si l'on est mieux que l'autre pour ce scénario particulier

Était-ce utile?

La solution

Vous pouvez utiliser

<% Html.RenderAction<ProductController>(c => c.RenderProductResults()); %>

Jetez un oeil à cette page

Autres conseils

Qu'en est-il RenderPartial? Cela semble correspondre à la facture.

<% Html.RenderPartial("MyPartialView", Model.Data); %>

S'il vous plaît jeter un oeil à DisplayTemplates ainsi que EditorTemplates dans MVC 2 preview.

Ou peut-être que vous voulez Templated Helpers ?

MvcContrib InputBuilder a quelque chose de similaire.

Bien que vous pouvez simplement écrire votre propre:

public static string RenderInput(this HtmlHelper html, object data, string prefix)
{
   foreach (var prop in data.GetType().GetProperties())
   {
      object val = prop.GetValue(data, new object[0]);
      string name = prefix + prop.Name;
      switch (prop.PropertyType.Name)
      {
          case "String": html.TextBox(name, val); break;
          case "Guid": html.Hidden(name, val); break;
          default: html.RenderInput(val, name + "."); break;
      }
   }
}

récursion avis. Bien sûr, vous devrez ajouter le support des collections, etc ... interrupteur à l'intérieur (PropertyType) ... mais ce n'est pas si difficile. Vous pouvez également vérifier UIHint sur la propriété de rendre partials. Beaucoup de possibilités et sous votre contrôle; -)

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