这应该是一个简单的问题来解决,因为它使用的方式我已修正最后一个问题与FooControl(下文)。

相同

基本上,我要添加派生验证器I到该复合控制制成。它工作正常,但在回发它只是消失在标记,让我觉得它失去了它的ViewState。

我可能做错事与实例,但我试过设置只的ControlToValidate,走动的东西,并没有什么作品。

我已经提供了一些周围的代码,看看有什么工作,然后什么不是。

    Private FooControl As IFooControl
    Private Validator As MyValidator

    Protected Overrides Sub CreateChildControls()

        FooControl = FooControlProvider.CreateFooControl(blah)

        Me.Controls.Add(FooControl.RetrieveControl())            

        ' Begin Not Working

        Validator = New MyValidator()
        Me.Controls.Add(Validator)

        Validator.ID = "MyValidatorID"
        Validator.ControlToValidate = FooControl.ID
        Validator.IsRequired = True ' Custom property
        Validator.ErrorMessage = "Please select an answer"

        ' End Not Working

        If Not DataSource Is Nothing Then
            FooControlProvider.AssignDataSource(DataSource, FooControl)
        End If
    End Sub
有帮助吗?

解决方案

我已经找到了问题。显然,在回发,无论你如何订购验证程序的创建,它的显示设置为无。我通过打破Render方法和检查验证变量发现这个

在溶液(劈?)是Render方法期间给校验器设置为所需的显示。

    Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
        Validator.Display = ValidatorDisplay.Dynamic
        MyBase.Render(writer)
    End Sub
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top