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



我有一个布局如下的表单:

<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 参数中不可用。我可以关闭它并从 POST 数据中获取数据,但想知道是否有更好的方法。

所以你完全定义了表单的字段和所有内容? 为什么不使用 DataForm 控件并为您动态创建窗体? 然后,您可以像这样获取数据:(formUserSettings 是一个 cms:DataForm)

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

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

if (ctrState != null)
{
    fState = ctrlState.Value;
}
很可能直到

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

最新更新