如何在表单布局脚本块中获取cms:FormField的值?

时间:2017-02-03 10:38:22

标签: kentico

我的表单有这样的布局:

<cms:FormField runat="server" ID="fMemberType" Field="MemberType" />
<cms:FormField runat="server" ID="fEmployeeCount" Field="EmployeeCount" />

<asp:Literal runat="server" ID="test" Text="test" />

<script runat="server">
protected void Page_PreRender(object sender, EventArgs e)
{
  test.Text = fMemberType.Value.ToString();
}
</script>

然而,这会产生Object reference not set to an instance of an object.,因为由于某种原因它找不到fMemberType。寻找正确的方法。

值得注意的是,表单字段是设置了依赖标志的下拉列表,因此更改它们会触发回发,或者至少它会,但我将webpart容器设置为更新面板,因此它是AJAXing,这意味着数据不是可在页面POST params中找到。我可以关闭它并从POST数据中获取数据,但想知道是否有更好的方法。

2 个答案:

答案 0 :(得分:0)

您是否完全定义了表单的字段和所有内容?为什么不使用DataForm控件并为您动态创建表单?然后你可以得到如下数据:( formUserSettings是一个cms:DataForm)

EditingFormControl ctrState = formUserSettings.BasicForm.FieldEditingControls["UserState"] as EditingFormControl;

然后做一些检查并分配值:

if (ctrState != null)
{
    fState = ctrlState.Value;
}

答案 1 :(得分:-1)

很可能直到预渲染之后才设置表单值。 Alen Genzic的建议将证明这一点。可能想试试OnInit。