我的代码中有multiView
和Validation 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>
我的问题是我需要在两个标签中触发必要的字段验证,用户按btnSave1
或btnSave2
。
但是现在如果按btnSave1它只会在第一个选项卡中激活验证。我该如何解决这个问题?
答案 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");
}
}
}
}