1

使用したasp.netページにフィールドがありますRequiredFieldValidator

<tr> 
  <td align="left" style="width: 130px"> 
    <asp:Label ID="LblPagename" runat="server" Text="Page Name " CssClass="label"></asp:Label><font 
      color="red"> *</font> 
  </td> 
  <td align="left" style="width: 1087px" class="layout-grid"> 
    <asp:TextBox ID="TxtPageName" runat="server" MaxLength="50" ></asp:TextBox> 
    <asp:RequiredFieldValidator ID="RequiredFieldValidator9" runat="server" Display="Dynamic" 
      ValidationGroup="Save" ControlToValidate="TxtPageName" ForeColor="Red"
      ErrorMessage="Please enter Page Name."></asp:RequiredFieldValidator>  
  </td> 
</tr>

保存時に私は上記CauseValidation="true"と同じことを許可していますValidationGroup

<tr> 
  <td colspan="3" align="center" style="width: 1193px"> 
    <asp:ImageButton ID="btnMenu" CausesValidation="true" ValidationGroup="Save" ImageUrl="~/Images/Save.png"  
      runat="server" OnClick="btnMenu_Click" OnClientClick="SaveFunctionalities();"/> 
    &nbsp;&nbsp; &nbsp;&nbsp; 
    <asp:ImageButton ID="btnCancelMenu" ImageUrl="~/Images/btnCancel.png" runat="server" 
      OnClick="btnCancelMenu_Click" /> 
  </td> 
</tr>

ただし、保存時に、空のフィールドのエラーメッセージとともに、保存が呼び出されます。

同じことが他のページでも正常に機能しています。

唯一の違いは、ここではjavascript関数呼び出しがあることOnClientClickです。

それは何か問題を引き起こしていますか?

4

1 に答える 1

1

SaveFunctionalities();エラーが発生したかどうかに応じて、がブール値を返すことを確認してください。すべてが正常である場合は、戻りtrueます-エラーがある場合は戻りfalseます。

次に、OnClientClickを更新して、その戻り変数をボタンに渡します。

OnClientClick="return SaveFunctionalities();"

問題がなければ、ボタンはtrue値を介して通常どおり続行されます。エラーがある場合は、false値を介して処理を停止するように指示されます。

アップデート

@Richaによってコメントに投稿されたコードから、false検証が何を返すかに関係なく、常にを返します。

関数は次のようになります...

function SaveFunctionalities() {
  if (Page_ClientValidate()) {
    ...
    return true;
  } else {
    return false; 
  }
}
于 2012-07-04T08:03:14.990 に答える