Comment puis-je faire les constructeurs d'entrée (MVC Contrib) fonctionnent avec Spark View Engine?
-
20-09-2019 - |
Question
Aujourd'hui, j'ai passé trois bonnes heures à essayer de convertir le projet MvcContrib.Samples.InputBuilders, inclus dans MVC Contrib pour le faire fonctionner avec rel="nofollow Spark Voir moteur, mais jusqu'à présent, n'a pas pu le faire.
Quelqu'un at-il une idée de pourquoi ces deux tout simplement pas se entendre?
Les changements que j'ai fait
InputForm.spark:
<viewdata model="SampleInput" />
!{Html.InputForm()}
Global.asax.cs:
...
protected void Application_Start() {
RegisterRoutes(RouteTable.Routes);
InputBuilder.BootStrap();
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new SparkViewFactory());
}
Web.config:
...
<spark>
<compilation debug="true"/>
<pages automaticEncoding="true">
<namespaces>
<add namespace="System"/>
<add namespace="System.Collections.Generic"/>
<add namespace="System.Linq"/>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Routing"/>
<add namespace="MvcContrib.UI.InputBuilder"/>
<add namespace="MvcContrib.UI.InputBuilder.Views"/>
<add namespace="Web.Models"/>
</namespaces>
</pages>
</spark>
(je copiais les trois derniers namespaces de l'exemple de projet.)
erreurs que je reçois
En fonction de l'ordre dans lequel Spark configuration I / InputBuilder dans Global.asax.cs, je reçois deux exceptions différentes.
Si je suis InputBuilder d'installation, puis Spark (code ci-dessus):
erreur CS1061: « System.Web.Mvc.HtmlHelper » ne fonctionne pas contiennent une définition pour « InputForm » et aucune méthode d'extension « InputForm » l'acceptation d'un premier argument de type « System.Web.Mvc.HtmlHelper » pourrait être trouvé (vous manque une aide de directive ou une référence d'assemblage?)
Si je première étincelle d'installation, puis InputBuilder:
Le point de vue « InputForm » ou son maître Ne peut être trouvé. Le suivant endroits ont été fouillés:
~ / Vues / Accueil / InputForm.aspx
~ / Vues / Shared / InputForm.aspx
~ / Vues / InputBuilders / InputForm.aspx
~ / Vues / Accueil / InputForm.ascx
~ / Vues / Shared / InputForm.ascx
La solution
Changement input.spark à:
<use namespace="MvcContrib.UI.InputBuilder"/>
<use namespace="MvcContrib.UI.InputBuilder.Views"/>
<add namespace="Web.Models"/>
<viewdata model="SampleInput" />
!{Html.InputForm()}
Ajout de web.config ne fonctionne pas dans Spark. Vous pouvez utiliser _global.spark à la place.
Il y a aussi un autre problème. Dans Spark stable, SparkView propriété Html
est de type HtmlHelper
, pas HtmlHelper<TModel>
. fonction Html.InputForm()
ne fonctionne que pour HtmlHelper<TModel>
, vous devrez télécharger la source Spark et utiliser version de développement, car il a été changé récemment. Vous pouvez également télécharger des sources stables et changer vous-même. Voici quelques informations:
Autres conseils
Votre sur la bonne voie avec la mise en place des constructeurs d'entrée, puis le moteur de vue étincelle. Vous pouvez voir à partir du fichier source à partir MvcContrib que vous avez besoin ce MvcContrib.UI.InputBuilder.Views d'espace de noms défini pour votre point de vue pour faire référence aux Extentions des constructeurs d'entrée.
J'ai écrit les constructeurs d'entrée, mais je ne sais pas assez sur le moteur de vue étincelle pour savoir pourquoi il ne résout pas la référence aux méthodes de extention pour les constructeurs d'entrée.