8
votes

Helper HTML fortement typé avec un modèle différent pour obtenir et poster

Si une action d'obtention retourne une vue avec un modèle "voiture". L'affichage affiche les informations de l'objet et prend entrée pour publier sous un formulaire à une autre action qui prend un objet de type "paiement"

Le modèle sur la vue est de type voiture et me donne le support HTML fortement supérieur et certaines autres fonctionnalités telles que DisplayText. Mais pour poster, je ne sais pas HTMLHelper Support comme TextBox (x => x.Amount, je dois le faire comme @ html.textbox ("montant" ... Sa possible, mais est-ce la seule option?


0 commentaires

5 Réponses :


9
votes

Vous pouvez le faire: xxx

avec cette méthode d'extension: xxx


0 commentaires

0
votes

Si je comprends votre problème correctement, essayez: xxx

Vous pouvez également créer un modèle d'éditeur pour le paiement. Voir Cette page pour plus de détails sur le faire .

Si je suis mal compris, un exemple de code pourrait aider.


0 commentaires

5
votes

Si je comprends bien votre question correctement, voici un certain code que je viens d'écrire pour l'un de mes projets de faire quelque chose de similaire. Cela ne nécessite rien de spécial comme ce qui a été suggéré par Max Toro. xxx


1 commentaires

Solution la plus propre. Fonctionne comme un charme.



1
votes

Ajout à la mise en œuvre par Max Toro, voici un couple de plus que lorsque vous avez un modèle non nul, mais ne disposez pas d'informations de type statique (ces deux méthodes doivent être intégrées à la mise en œuvre maximale).

Ces méthodes fonctionnent bien lorsque vous avez récupéré dynamiquement des noms de propriétés pour un modèle et que vous devez appeler les méthodes HTMLHelper non génériques qui prennent un nom au lieu d'une expression: p> xxx pré>

pour Exemple. P>

    public static HtmlHelper HtmlHelperFor( this HtmlHelper htmlHelper, object model )
    {
        return HtmlHelperFor( htmlHelper, model, null );
    }

    public static HtmlHelper HtmlHelperFor( this HtmlHelper htmlHelper, object model, string htmlFieldPrefix )
    {
        var t = model.GetType();
        var viewDataContainer = CreateViewDataContainer( htmlHelper.ViewData, model );

        TemplateInfo templateInfo = viewDataContainer.ViewData.TemplateInfo;

        if( !String.IsNullOrEmpty( htmlFieldPrefix ) )
            templateInfo.HtmlFieldPrefix = templateInfo.GetFullHtmlFieldName( htmlFieldPrefix );

        ViewContext viewContext = htmlHelper.ViewContext;
        ViewContext newViewContext = new ViewContext( viewContext.Controller.ControllerContext, viewContext.View, viewDataContainer.ViewData, viewContext.TempData, viewContext.Writer );

        var gt = typeof( HtmlHelper<> ).MakeGenericType( t );

        return Activator.CreateInstance( gt, newViewContext, viewDataContainer, htmlHelper.RouteCollection ) as HtmlHelper;
    }


0 commentaires

1
votes

pour asp.net core 2 xxx


0 commentaires