2010-01-22 7 views
3

Je dois créer un formulaire où pour chaque jour du mois l'utilisateur entrera dans plusieurs valeurs différentes (Im penser une sorte de grille de chose, les valeurs en haut, le jour du mois sur le côté) en utilisant des formulaires ASP.NET avec backend C# ...ASP.NET Génération de formulaire dynamique et l'inscription

Alors, quelle serait la meilleure façon de générer ce formulaire? Je ne veux pas coder autant de contrôles car cela rendrait l'ensemble un peu ennuyeux mais je devrais aussi pouvoir lui donner des valeurs entrées dans les jours précédents et les afficher dans les zones de texte.

Comment pourrais-je créer ce formulaire et comment puis-je obtenir les valeurs des zones de texte dans le backend?

Répondre

2

Voici un exemple d'application qui crée un formulaire dynamique et le renvoie à la base de données. Il est écrit dans VB.Net mais je suis sûr qu'il est facilement converti en C#.

http://www.asp101.com/samples/form_dynamic_aspx.asp

Fondamentalement, la façon dont il fonctionne est d'ajouter les contrôles à la forme dynamique puis accéder aux valeurs qui sont affichées sur le serveur avec la collection Request.Form.

0

Si vous construisez à partir de zéro et peut utiliser le framework ASP.NET MVC, peut-être la peine de vérifier le projet formulaires dynamiques sur CodePlex à: http://mvcdynamicforms.codeplex.com/

Il est peut-être trop pour votre situation, mais cela semble un moyen assez puissant d'avoir une approche de formulaires dynamiques (vous pouvez stocker la config dans un fichier XML, dans une base de données, etc.), et la publication des données est traitée en évaluant l'objet Request dans le code côté serveur.

0

Vous pouvez le faire très facilement en utilisant ma bibliothèque FormFactory.

Par défaut, il reflète contre un modèle en vue de produire un tableau PropertyVm[]:

`` `

var vm = new MyFormViewModel 
{ 
    OperatingSystem = "IOS", 
    OperatingSystem_choices = new[]{"IOS", "Android",}; 
}; 
Html.PropertiesFor(vm).Render(Html); 

` ``

mais vous pouvez également créer les propriétés programatically, de sorte que vous pourrait charger les paramètres d'une base de données puis créer PropertyVm.

Ceci est un extrait d'un script Linqpad.

`` `

//import-package FormFactory 
//import-package FormFactory.RazorGenerator 


void Main() 
{ 
    var properties = new[]{ 
     new PropertyVm(typeof(string), "username"){ 
      DisplayName = "Username", 
      NotOptional = true, 
     }, 
     new PropertyVm(typeof(string), "password"){ 
      DisplayName = "Password", 
      NotOptional = true, 
      GetCustomAttributes =() => new object[]{ new DataTypeAttribute(DataType.Password) } 
     } 
    }; 
    var html = FormFactory.RazorEngine.PropertyRenderExtension.Render(properties, new FormFactory.RazorEngine.RazorTemplateHtmlHelper()); 

    Util.RawHtml(html.ToEncodedString()).Dump(); //Renders html for a username and password field. 
} 

` ``

Theres un demo site avec des exemples des différentes fonctionnalités que vous pouvez configurer (par exemple, des collections imbriquées, autocomplete, datepickers etc.)

Questions connexes