gpt4 book ai didi

ektron - Ektron 中的 FormBlock 服务器控制

转载 作者:行者123 更新时间:2023-12-01 05:25:04 26 4
gpt4 key购买 nike

我在 Ektron 8.6 工作。

我的模板页面中有一个 FormBlock 服务器控件,它有一个来自工作区的有效 HTML 表单的 DefualutFormID。工作区中的表单几乎没有表单字段及其相应的值。

在呈现模板页面时,我需要获取这些表单字段值并使用其他一些值重新设置它们。

我应该在哪个 Page –Cycle 事件中进行此编码?

我在预渲染事件中尝试了这段代码,但是我无法在那里获取值,但是我可以设置一个值。

我也尝试了 SaveStateComplete 事件,但没有运气。

String s=FormBlock1.Fields["FirstName"].Value;

If(s=”some text”)

{

// Re-set as some other vale.

FormBlock1.Fields["FirstName"].Value=”Some other value”;

}

在哪种情况下我可以编写这段代码?

最佳答案

Page_Load 可以很好地更改表单字段的值。默认行为是 Ektron 服务器控件在 Page_Init 期间加载它们的数据。

真正的问题是如何获得默认值。我尝试了所有可能的方法来获取定义 Ektron 表单的数据(更具体地说,字段的默认值),这就是我想出的。我承认,这有点黑客,但它有效。

var xml = XElement.Parse("<ekForm>" + cmsFormBlock.EkItem.Html + "</ekForm>");
var inputField = xml.Descendants("input").FirstOrDefault(i => i.Attribute("id").Value == "SampleTextField");
string defaultValue = inputField.Attribute("value").Value;
if (defaultValue == "The default value for this field is 42")
{
// do stuff here...
}

我的 FormBlock 服务器控件是在 ASPX 端定义的,没什么特别的:

<CMS:FormBlock runat="server" ID="cmsFormBlock" DynamicParameter="ekfrm"/>

当然,XElement 需要以下 using 语句:

using System.Xml.Linq;

所以基本上,我用单个根元素包装 HTML,以便它成为有效的 XML。 Ektron 在要求内容为 XHTML 方面做得很好,所以这应该可行。当然,在生产中使用它之前,应该在更复杂的形式上进行测试。我还建议采用健康剂量的防御性编程——空检查、try/catch 等。

一旦解析为XML,就可以通过获取 value来获取表单字段的value属性。属性。对于我设置的示例表单,以下是表单 HTML (EkItem.Html) 的一部分:

<input type="text" value="The default value for this field is 42" class="design_textfield" size="24" title="Sample Text Field" ektdesignns_name="SampleTextField" ektdesignns_caption="Sample Text Field" id="SampleTextField" ektdesignns_nodetype="element" name="SampleTextField" />

关于ektron - Ektron 中的 FormBlock 服务器控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14380764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com