2010-01-22 2 views
3

Мне нужно создать форму, где за каждый день месяца пользователь вводит несколько разных значений (Im думает о виде сетки, значениях вверху, в день месяца вдоль стороны) с использованием форм ASP.NET с бэкендом C# ...ASP.NET Динамическое формирование и отправка формы

Итак, каков был бы лучший способ создать эту форму? Я не хочу, чтобы жестко кодировать многие элементы управления, поскольку это сделало бы подачу немного раздражающим, но мне также нужно было бы указать значения, введенные в предыдущие дни, и показать их в текстовых окнах.

Как я могу создать эту форму, а также как получить значения из текстовых полей в бэкэнд?

ответ

2

Вот пример приложения, которое создает динамическую форму и отправляет ее обратно в базу данных. Это написано в VB.Net, но я уверен, что он легко конвертируется в C#.

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

В принципе, как он работает добавляет элементы управления в виде динамически затем доступа к значениям, которые размещены на сервере с Request.Form коллекции.

0

Если вы строите с нуля и можете использовать рамки ASP.NET MVC, может быть стоит проверить Динамические формы проекта более на CodePlex: http://mvcdynamicforms.codeplex.com/

Это может быть излишним для вашей ситуации, но это, кажется, довольно мощный способ использования динамических форм (вы можете сохранить конфигурацию в XML-файле, в базе данных и т. д.), а публикация данных обратно обрабатывается путем оценки объекта Request в коде на стороне сервера.

0

Вы можете сделать это очень легко, используя мою библиотеку FormFactory.

По умолчанию она отражает против модели представления для получения PropertyVm[] массива:

`` `

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

` ``

, но вы также можете создать свойства программно, так что вы можно загрузить настройки из базы данных, затем создать PropertyVm.

Это фрагмент сценария 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 в demo site с примерами различных функций, вы можете настроить (например, вложенных коллекций, автозаполнения, datepickers и т.д.)

Смежные вопросы