ASP.NET Динамическая генерация и передача форм - PullRequest
3 голосов
/ 22 января 2010

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

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

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

Ответы [ 3 ]

2 голосов
/ 22 января 2010

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

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

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

0 голосов
/ 09 сентября 2016

Вы можете сделать это очень легко, используя мою библиотеку 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.
}

`` `

Themo демонстрационный сайт с примерами различных функций, которые вы можете настроить (например, вложенные коллекции, автозаполнение, средства выбора даты и т. Д.)

0 голосов
/ 01 апреля 2010

Если вы строите с нуля и можете использовать среду ASP.NET MVC, возможно, стоит проверить проект Dynamic Forms в codeplex: http://mvcdynamicforms.codeplex.com/

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

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