我的表单有这样的布局:
<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数据中获取数据,但想知道是否有更好的方法。
答案 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。