Является ли XSL правильным инструментом для доставки и обработки пользовательских форм? - PullRequest
1 голос
/ 16 ноября 2009

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

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

Недавно я посмотрел таблицы стилей XSL, с которыми у меня нет опыта, но я понял, что использование XSLT может полностью решить мою проблему. Я на правильном пути? Есть ли у кого-нибудь советы о том, как динамически доставлять формы и обрабатывать логику, связанную с этими формами? Какие-нибудь хорошие учебники по XSL в ASP.NET MVC?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 17 ноября 2009

Вот как я это сделал: у меня есть страница From Processor, которая берет каждое поле, отправленное в форме POST, и сохраняет их в БД как дочерние элементы объекта post формы. Затем я использую шаблон NVelocity для отображения данных формы. Таким образом, все, что вам нужно сделать, это создать новые стандартные формы HTML, и их действия указывают на страницу вашего процессора форм, а также создавать новые шаблоны NVelocity для отображения новых форм.

Если вы выберете этот маршрут и вам потребуется дополнительная помощь в его реализации, оставьте комментарий, и я дам вам больше информации.

0 голосов
/ 18 ноября 2009

Благодаря Джошу Пирсу и Грейгсу обоим. Хотя ни одна из ваших идей не была именно тем, что мне было нужно, каждая из них имела свои достоинства и вдохновляла меня на то, чтобы прийти к решению, которое, я думаю, сработает.

У каждого из моих клиентов будет группа предпочтений, которые я смогу контролировать. Одним из таких предпочтений может быть «Использовать пользовательскую форму Blah [t / f]». Если я установлю это в true, мой контроллер может попытаться найти представление по имени «ClientIdentifier_BlahForm». Если он не найден, я просто представлю представление по умолчанию для этой формы.

Бизнес-правила для этой формы должны быть достаточно простыми для обработки в JavaScript. Кроме того, у меня может быть некоторая мера стандартизации в моем контроллере. Например, любое значение формы, которое я получаю с «PhoneNumber» в его имени, проверяется как таковое и т. Д. Оттуда я могу просто упаковать свои пары имя / значение и отправить их по месту назначения.

Еще раз спасибо.

0 голосов
/ 17 ноября 2009

Это кажется разумным способом решения проблемы. Возможно, вы захотите рассмотреть использование xsl / xml с PartialViews, чтобы вы могли решить, какие PartialViews следует визуализировать в соответствии с действующими правилами.

Таким образом, каждый PartialView будет обрабатывать элементарные данные, такие как адрес или телефон. Вы можете прикрепить к нему данные, описывающие, где хранить эту информацию в вашем xml / xsl.

Для вас это означает, что вы можете иметь элементарные функциональные возможности, а файл xsl может описывать, что и где отображать.

Если вы разработаете это право, вы также сможете динамически добавлять поля в PartialView, и код должен обрабатывать его без проб.

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

Таблица поиска может быть способом, или вы можете хранить информацию о таблице и поле внутри XML-документа.

Все это звучит сложно, я знаю, но на самом деле не после того, как у вас есть исходный XML-документ.

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