我的代码中有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,它只会在第一个选项卡中触发验证。我怎么才能解决这个问题?
发布于 2015-04-22 12:14:58
答案是不,你不能这样做。
ASP.NET多视图设计用于一次显示和验证一个视图。因此,只有活动视图的html被传递到客户端的浏览器。
有一个解决办法,但如果使用MultiView的ActiveViewChanged事件,可能会出现问题。
另一种选择是重构页面并使用两个div,每个步骤一个,在从第一步更改到第二步时,使其中一个可见,并在最后一步验证整个页面一次。这将要求您使用javascript做更多的工作。
发布于 2016-08-31 20:12:09
在我的情况下找到了解决办法。当在后面的代码中单击选项卡时,我进行了不同的视图验证,防止用户在不验证的情况下离开视图。
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;
}
}我知道这是一个古老的线索,但我想,我会把它扔到那里,为未来的人遇到类似的问题。
发布于 2019-06-05 11:03:44
试试这个:
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");
}
}
}
}https://stackoverflow.com/questions/29795217
复制相似问题