public ActionResult CreateFormGroup(FormGroupModel formGroupModel) { // Obtain your OAuth token string accessToken = RequestItemsService.User.AccessToken; // Represents your {ACCESS_TOKEN} var basePath = $"{RequestItemsService.Session.RoomsApiBasePath}/restapi"; // Base API path string accountId = RequestItemsService.Session.AccountId; // Represents your {ACCOUNT_ID} try { // Call the Rooms API to create form group FormGroup formGroup = CreateFormGroups.CreateGroup(basePath, accessToken, accountId, formGroupModel.Name); ViewBag.h1 = "The form group was successfully created"; ViewBag.message = $"The form group was successfully created, FormGroupId: '{formGroup.FormGroupId}'"; ViewBag.Locals.Json = JsonConvert.SerializeObject(formGroup, Formatting.Indented); return(View("example_done")); } catch (ApiException apiException) { ViewBag.errorCode = apiException.ErrorCode; ViewBag.errorMessage = apiException.Message; return(View("Error")); } }
public ActionResult CreateFormGroup(FormGroupModel formGroupModel) { string accessToken = RequestItemsService.User.AccessToken; // Represents your {ACCESS_TOKEN} var basePath = $"{RequestItemsService.Session.RoomsApiBasePath}/restapi"; // Base API path // Step 2 start var apiClient = new ApiClient(basePath); apiClient.Configuration.DefaultHeader.Add("Authorization", "Bearer " + accessToken); // Step 2 end var formGroupsApi = new FormGroupsApi(apiClient); string accountId = RequestItemsService.Session.AccountId; try { // Step 3 start var formGroupForCreate = new FormGroupForCreate(formGroupModel.Name); // Step 3 end // Step 4 start FormGroup formGroup = formGroupsApi.CreateFormGroup(accountId, formGroupForCreate); // Step 4 end ViewBag.h1 = "The form group was successfully created"; ViewBag.message = $"The form group was successfully created, FormGroupId: '{formGroup.FormGroupId}'"; ViewBag.Locals.Json = JsonConvert.SerializeObject(formGroup, Formatting.Indented); return(View("example_done")); } catch (ApiException apiException) { ViewBag.errorCode = apiException.ErrorCode; ViewBag.errorMessage = apiException.Message; return(View("Error")); } }
private void BuilderForm() { var form = new TagBuilder("form"); boday.InnerHtml.AppendHtml(form); form.AddCssClass("form-horizontal"); form.Attributes.Add("id", "builder_form"); int lableWidth = formColumn ? 2 : 2; int divWidth = formColumn ? 4 : 10; int groupIndex = formColumn ? 2 : 1; int index = 0; TagBuilder group = null; List <FormGroupModel> listGroup = new List <FormGroupModel>(); foreach (var prop in modelType.GetProperties()) { var formIgnore = prop.GetCustomAttribute <FormIgnoreAttribute>(); if (formIgnore != null) { continue; } var displayAttribute = prop.GetCustomAttribute <DisplayAttribute>(); if (displayAttribute == null || displayAttribute.GetAutoGenerateField() == false || prop.GetCustomAttribute <ModelKeyAttribute>() != null) { continue; } var modelExplorer = viewModel.ModelExplorer.GetExplorerForProperty(prop.Name); var control = new FormGroupModel() { Sort = displayAttribute.Order, DisplayName = displayAttribute.Name?.Length < 1 ? prop.Name : displayAttribute.Name, Name = prop.Name }; listGroup.Add(control); BuildInputType(prop, control, modelExplorer); if (control.Input != null) { control.Input.Attributes.Add("ng-model", $"Model.Active.{prop.Name}"); } } foreach (var item in listGroup.OrderBy(d => d.Sort)) { if (index++ % groupIndex == 0 || group == null) { group = new TagBuilder("div"); form.InnerHtml.AppendHtml(group); group.AddCssClass("form-group"); } var label = new TagBuilder("label"); label.AddCssClass($"col-sm-{lableWidth} control-label"); label.Attributes.Add("for", item.Name); label.InnerHtml.AppendHtml(item.DisplayName); group.InnerHtml.AppendHtml(label); var divInput = new TagBuilder("div"); group.InnerHtml.AppendHtml(divInput); divInput.AddCssClass($"col-sm-{divWidth}"); if (item.Input != null) { divInput.InnerHtml.AppendHtml(item.Input); } if (item.TextDanger != null) { divInput.InnerHtml.AppendHtml(item.TextDanger); } } var modelKey = modelType.GetProperties().Where(d => d.GetCustomAttribute <ModelKeyAttribute>() != null).FirstOrDefault(); if (modelKey != null) { form.InnerHtml.AppendHtml($"<input type='text' id='{modelKey.Name}' name='{modelKey.Name}' value='{modelKey.GetValue(viewModel.Model, null)}' style='display:none' ng-model='Model.Active.{modelKey.Name}'>"); } form.InnerHtml.AppendHtml("<div ng-show='Model.Edit.saveSuccess' class=\"alert alert-success\" role=\"alert\">操作成功!</div>"); form.InnerHtml.AppendHtml("<div ng-show='Model.Edit.saveError' class=\"alert alert-danger\" role=\"alert\">{{Model.Edit.errorInfo}}</div>"); }
void BuildInputType(PropertyInfo prop, FormGroupModel group, ModelExplorer modelExplorer) { //判断是否有设置dataType var dataType = prop.GetCustomAttribute <DataTypeAttribute>(); if (dataType?.DataType != null) { switch (dataType.DataType) { case DataType.Text: group.Input = Generator.GenerateTextBox(viewContext, modelExplorer, prop.Name, null, null, new { @class = "form-control" }); group.TextDanger = Generator.GenerateValidationMessage(viewContext, modelExplorer, prop.Name, null, viewContext.ValidationMessageElement, new { @class = "text-danger" }); break; case DataType.Password: group.Input = Generator.GeneratePassword(viewContext, modelExplorer, prop.Name, null, new { @class = "form-control" }); group.TextDanger = Generator.GenerateValidationMessage(viewContext, modelExplorer, prop.Name, null, viewContext.ValidationMessageElement, new { @class = "text-danger" }); break; case DataType.PhoneNumber: group.Input = Generator.GenerateTextBox(viewContext, modelExplorer, prop.Name, null, null, new { @class = "form-control", @type = "tel" }); group.TextDanger = Generator.GenerateValidationMessage(viewContext, modelExplorer, prop.Name, null, viewContext.ValidationMessageElement, new { @class = "text-danger" }); break; case DataType.MultilineText: group.Input = Generator.GenerateTextArea(viewContext, modelExplorer, prop.Name, 2, 1, new { @class = "form-control" }); group.TextDanger = Generator.GenerateValidationMessage(viewContext, modelExplorer, prop.Name, null, viewContext.ValidationMessageElement, new { @class = "text-danger" }); break; case DataType.EmailAddress: group.Input = Generator.GenerateTextBox(viewContext, modelExplorer, prop.Name, null, null, new { @class = "form-control", @type = "email" }); group.TextDanger = Generator.GenerateValidationMessage(viewContext, modelExplorer, prop.Name, null, viewContext.ValidationMessageElement, new { @class = "text-danger" }); break; case DataType.Url: group.Input = Generator.GenerateTextBox(viewContext, modelExplorer, prop.Name, null, null, new { @class = "form-control", @type = "url" }); group.TextDanger = Generator.GenerateValidationMessage(viewContext, modelExplorer, prop.Name, null, viewContext.ValidationMessageElement, new { @class = "text-danger" }); break; default: break; } return; } // 自定义selectControl控件 var selectControl = prop.GetCustomAttribute <SelectControlAttribute>(); if (selectControl != null) { if (selectControl.Type == ItemDataType.StaticItems) { List <SelectListItem> nodes = new List <SelectListItem>(); var items = modelType.GetProperty(selectControl.ItemsName); if (items != null) { nodes = items.GetValue(viewModel.Model, null) as List <SelectListItem>; } group.Input = Generator.GenerateSelect(viewContext, modelExplorer, null, prop.Name, nodes?.ToList(), false, new { @class = "form-control" }); var initValue = nodes.FirstOrDefault(d => d.Selected)?.Value; var ngInit = initValue?.Length > 0 ? initValue : nodes[0].Value; group.Input.Attributes.Add("ng-init", $"Model.Active.{prop.Name}='{ngInit}'"); } else { string url = selectControl.Type == ItemDataType.AbsUrl ? selectControl.Url : $"http://{viewContext.HttpContext.Request.Host.Value}/{selectControl.Controller}/{selectControl.Action}"; group.Input = new TagBuilder("select-control"); group.Input.AddCssClass("form-control"); group.Input.Attributes.Add("id", prop.Name); group.Input.Attributes.Add("name", prop.Name); group.Input.Attributes.Add("request-url", url); group.Input.Attributes.Add("request-init", $"Model.Active.{prop.Name}"); } return; } //自定义 radiolist 控件 //var radioListControl = prop.GetCustomAttribute<RadioListAttribute>(); //if (radioListControl != null) //{ // var values = radioListControl.Values.Split(','); // var tests = radioListControl.Texts.Split(','); // if (values.Length == tests.Length) // { // group.Input = new TagBuilder("div"); // var index = 0; // foreach (var item in values) // { // group.Input = new TagBuilder("label"); // group.Input.InnerHtml.AppendHtml($"<input type='radio' name='{prop.Name}' ng-model='Model.Active.{item}' class='form-control'/>{tests[index++]}"); // } // } // return; //} if (prop.GetType() == typeof(int) || prop.GetType() == typeof(float) || prop.GetType() == typeof(double)) { group.Input = Generator.GenerateTextBox(viewContext, modelExplorer, prop.Name, null, null, new { @class = "form-control", @type = "number" }); } else { group.Input = Generator.GenerateTextBox(viewContext, modelExplorer, prop.Name, null, null, new { @class = "form-control" }); } group.TextDanger = Generator.GenerateValidationMessage(viewContext, modelExplorer, prop.Name, null, viewContext.ValidationMessageElement, new { @class = "text-danger" }); }
protected override void InitializeInternal() { FormGroupModel = new FormGroupModel(); }