Asp.Net MultiView中的验证组

时间:2015-04-22 10:50:07

标签: c# asp.net validation

我的代码中有multiViewValidation group。根据我的代码,当用户按下按钮时,需要保存视图中的所有数据。

    <asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0">    
     <asp:View ID="viewGegevens" runat="server">
          <asp:TextBox ID="txtCompanyname" MaxLength="100" runat="server" CssClass=""></asp:TextBox>
          <asp:RequiredFieldValidator ID="RequiredFieldValidator9" runat="server" ToolTip="Bedrijfsnaam vereist!"
                                Display="Dynamic" ErrorMessage="*" ValidationGroup="Save" ControlToValidate="txtCompanyname"
                                CssClass="required-asterics"></asp:RequiredFieldValidator>

         <div>
            <asp:LinkButton ID="btnSave1" Text="Opslaan" runat="server" CssClass="btn-ctrl right" OnClick="txtSave1_Click" ValidationGroup="Save">Save
            </asp:LinkButton>
            <asp:LinkButton ID="btnCancel1" Text="Annuleren" runat="server" CssClass="btn-ctrl right" OnClick="txtCancel1_Click">  Cancel 
            </asp:LinkButton>    
         </div>
      </asp:View>

      <asp:View ID="viewGegevens2" runat="server">
           <asp:TextBox ID="txtBillingPostalCode" runat="server" CssClass="" MaxLength="100"></asp:TextBox>
           <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ToolTip="Postcode vereist!"
                                ErrorMessage="*" ValidationGroup="Save" ControlToValidate="txtBillingPostalCode"
                                Display="Dynamic" CssClass="required-asterics"></asp:RequiredFieldValidator>

         <div>
            <asp:LinkButton ID="btnSave2" Text="Opslaan" runat="server" CssClass="btn-ctrl right" OnClick="txtSave2_Click" ValidationGroup="Save">Save
            </asp:LinkButton>
            <asp:LinkButton ID="txtCancel2" Text="Annuleren" runat="server" CssClass="btn-ctrl right" OnClick="txtCancel2_Click">  Cancel 
            </asp:LinkButton>    
         </div>
      </asp:View>
    </asp:MultiView>

我的问题是我需要在两个标签中触发必要的字段验证,用户按btnSave1btnSave2。 但是现在如果按btnSave1它只会在第一个选项卡中激活验证。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

找到一个适合我的解决方法。当在后面的代码中单击选项卡时,我使不同的视图验证,防止用户在未经验证的情况下离开视图。

protected void Tab3_Click(object sender, EventArgs e)
{
    Page.Validate("YourValidationGroup");
    if (Page.IsValid)
    {
        Tab1.CssClass = "Initial";
        Tab2.CssClass = "Initial";
        Tab3.CssClass = "Clicked";
        MainView.ActiveViewIndex = 2;
    }
}

我在一个旧线程中知道这一点,但我认为我会把它扔给那些遇到类似问题的未来的人。

答案 1 :(得分:1)

答案是否定的,你不能这样开箱即用。

ASP.NET Multiview旨在一次显示和验证一个视图。因此,只有活动视图的html才会传送到客户端的浏览器。

如果您使用的是MultiView的ActiveViewChanged事件,则会有workaround但可能会给您带来问题。

另一种选择是重构页面并使用两个div,每个步骤一个,从第一步到第二步更改一个或另一个,并在最后一步验证整个页面一次。这将要求您使用javascript做更多的工作。

答案 2 :(得分:0)

尝试一下:

SelectView(0);
        Validate();
        if (IsValid)
        {
            SelectView(1);
            Validate();
            if (IsValid)
            {
                SelectView(2);
                Validate();
                if (IsValid)
                {
                    SelectView(3);
                    Validate();
                    if (IsValid)
                    {
                        UpdateHeader();
                        Response.Redirect("FinConfLanding.aspx");
                    }
                }
            }
        }