【问题标题】:Getting Defualt Values of a Form in Ektron using API使用 API 在 Ektron 中获取表单的默认值
【发布时间】:2013-02-22 06:28:16
【问题描述】:

我在 Ektron 8.02 中工作。

我正在尝试获取与工作区中的 Ektron“HTML 表单”相关的数据。 我需要使用 API 获取表单字段名称及其默认值。 我尝试使用 Ektron.Cms.API.Content.Form.GetFormFieldList API。 但我无法获得与表单字段关联的默认值。 是否有任何其他 API 提供此数据? 有人可以提供一些关于这方面的见解吗?

【问题讨论】:

    标签: ektron


    【解决方案1】:

    我刚刚回答了一个类似的问题 - FormBlock Server Control in Ektron

    没有办法(我能找到)使用 Ektron API 获得您需要的东西。无论出于何种原因,API 都不会为您提供默认值。但是,表单的 HTML 确实包含默认值。您可以使用 EkItem.Html 属性从 FormBlock 服务器控件获取 HTML,也可以使用 ContentAPI。我的第一个想法是使用 FormAPI 并获取 FormData 对象,但奇怪的是,FormData 返回一个空的 Html 属性。因此,要仅使用 API 调用来执行此操作,您需要实例化两个类:Ektron.Cms.API.Content.Content 用于 HTML,Ektron.Cms.API.Content.Form 用于表单字段列表。

    所以,长话短说,这里有一些代码会给你一个字典,其中键是字段的名称,值是字段的默认值。

    private Dictionary<string, string> GetFormFieldDefaults(long formId)
    {
        var defaults = new Dictionary<string, string>();
        var formApi = new Ektron.Cms.API.Content.Form();
        var contentApi = new Ektron.Cms.API.Content.Content();
    
        var formFields = formApi.GetFormFieldList(formId);
        var formData = formApi.GetForm(formId); // Can't use FormData; have to use ContentAPI / ContentData to get the HTML
        //if (string.IsNullOrEmpty(formData.Html)) throw new Exception("FormData with empty HTML. Eeek!");
    
        var contentData = contentApi.GetContent(formId);
        var formXml = string.Concat("<ekForm>", contentData.Html, "</ekForm>");
        var ekForm = XElement.Parse(formXml);
        var inputs = ekForm.Descendants("input");
        foreach (var fieldDefinition in formFields.Fields)
        {
            var name = fieldDefinition.FieldName;
            var input = inputs.FirstOrDefault(i => i.Attribute("id").Value == name);
            if (input == null) continue;
    
            var defaultValue = input.Attribute("value").Value;
            defaults.Add(name, defaultValue);
        }
        return defaults;
    }
    

    此代码仅查找 &lt;input /&gt; 字段,因此如果您想要下拉列表的默认值,可能需要做一些额外的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多