Использование разметки Razor для создания интерфейса пользовательской задачи в бизнес-процессе
Внимание!
Компания не несет ответственности за изменения, внесенные Вами в системные формы. После обновления системы на новую версию некоторые измененные Вами представления могут работать некорректно.
Чтобы использовать разметку Razor, необходимо в настройках пользовательской задачи на вкладке Настройки формы установить флаг Использовать шаблон Razor и прописать путь до этого шаблона в формате: ~\WebApplication\Views\Shared\Forms\Workflow\P_Process\TaskForm.cshtml . При этом файл TaskForm.cshtml необходимо предварительно создать в каталоге ../<Общая папка с файлами системы ELMA>\UserConfig\WebApplication\Views\Shared\Forms\Workflow\P_Process .
Контекстные переменные процесса можно вывести так (с помощью свойства style="margin-top:10px" можно регулировать ширину поля):
1 2 3 | <table style= "margin-top:10px" > @Html.EditableProperty( "Entity.value1" ) </table> |
где value1 - это имя свойства контекстной переменной процесса.
Для вывода переменных в режиме Только для чтения вместо EditableProperty необходимо использовать метод Property:
1 2 3 | <table style= "margin-top:10px" > @Html.Property( "Entity.value1" ) </table> |
1 2 3 4 5 6 7 8 | <table> <tr> <td>@Html.Caption( "Entity.value1" )</td> <td>@Html.Editor( "Entity.value1" )</td> <td>@Html.Caption( "Entity.value2" )</td> <td>@Html.Editor( "Entity.value2" )</td> </tr> </table> |
Если необходимо вывести в задаче несколько контекстных переменных в одну строку, но в режиме Только для чтения, то код будет таким же, но вместо метода Editor нужно использовать метод Display.
Для того, чтобы вывести две контекстные переменные типа какого-либо объекта в одну строку, можно использовать следующую конструкцию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <table style= "margin-top:10px; width:75%" > <tr> <td style= "width:50%" > <table> @Html.EditableProperty( "Entity.Klient" , a=>a.Required=true) </table> </td> <td> <div style= "width:10px;" /> </td> <td style= "width:50%" > <table> @Html.EditableProperty( "Entity.Usluga" ) </table> <td> </tr> </table> |
Каждая переменная выводится в отдельной таблице в колонке общей таблицы: это позволяет избежать влияния встроенных свойств метода EditableProperty (как и метода Property), которые всегда формируют отдельную строку таблицы для выводимого значения.
Для применения нескольких CSS свойств синтаксис следующий:
1 | @Html.EditableProperty( "Entity.value1" , a => {a.Html.style[ "width" ]= "250px" ; a.Html.style[ "height" ]= "250px" ;}) |
1 | @Html.EditableProperty( "Entity.blok" ) |
1 2 3 4 5 6 7 8 | <table> @Html.Property( "Entity.blok" , a => { a.TablePartParentId = Model.Entity.Id; a.ViewProviderUid = EleWise.ELMA.Workflow.Web.Integration.WorkflowTaskObjectViewItemProvider.UID; a.ViewItemId = Model.Task.Id.ToString(); }) </table> |
1 | @Html.EditableProperty( "Entity.value1" , a=>a.Required=true) |
1 | @Html.Partial( "WorkflowTask/Buttons" , Model) |
1 2 3 4 5 6 | <td style= "color:red" > @Html.Caption( "Entity.value1" ) </td> <td style= "color:blue" > @Html.Display( "Entity.value1" , a => {}) </td> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | @using (var data = new ObjectViewData(this)) @inherits EleWise.ELMA.Web.Mvc.DynamicViewControl<EleWise.ELMA.Workflow.Web.Models.WorkflowTaskInfo> @Html.Partial( "WorkflowTask/ExecutedInfo" , Model.ExecutedInfo) @(TabPanel( "WorkflowTask1" ).Items(tabs => { tabs.Add( new EleWise.ELMA.Web.Mvc.Models.Selectors.TabPanelItem() { Text = SR.T( "Общие поля" ), Selected = Model.SelectedTab == 0 }).Content(@<text> @Html.Partial( "~/Modules/EleWise.ELMA.Workflow.Web/Views/WorkflowTask/DefaultFieldsView.cshtml" ) </text>); tabs.Add( new EleWise.ELMA.Web.Mvc.Models.Selectors.TabPanelItem() { Text = SR.T( "Дополнительно" ) }).Content(@<table style= "margin-top:10px" >@Html.EditableProperty( "Entity.value1" )</table>); }).Render()) @Html.Partial( "WorkflowTask/Buttons" , Model) |