ページにカスタムバリデータがあります:
<asp:CustomValidator ID="CustomValidator2" runat="server"
ControlToValidate="ddlProposer" ErrorMessage="Please select some values."
Display="Dynamic" onservervalidate="CustomValidator2_ServerValidate"
ClientValidationFunction="CustomValidator2_ClientValidate">
</asp:CustomValidator>
ListCount
サーバー側のリストが空でない (または変数 > 0)場合、有効である必要があります。このリストは、ページがロードされた後に変更される場合があります (更新パネルのボタンを使用):
public partial class Pages_Application_Application : System.Web.UI.Page
{
protected List<IdValue> ProposersList
{
get
{
if (ViewState["proposersList"] == null)
ViewState["proposersList"] = new List<IdValue>();
return ViewState["proposersList"] as List<IdValue>;
}
set
{
ViewState["proposersList"] = value;
}
}
public int ListCount
{
get
{
return this.ProposersList.Count;
}
}
...
サーバー側の検証に問題はありません。
protected void CustomValidator2_ServerValidate(object source, ServerValidateEventArgs args)
{
args.IsValid = this.ProposersList.Count > 0;
}
問題はクライアント側の部分にあります。私はこのようなことを試みてきました:
<script type="text/javascript">
function CustomValidator2_ClientValidate(source, arguments) {
var serverVariable = <%= ListCount %>;
alert(serverVariable);
arguments.IsValid = serverVariable > 0;
}
</script>
ただし、最初のページの読み込み時にのみ起動し、ListCount 変数は常に 0 です (serverVariable も同様です)。
問題は、それを機能させる簡単な方法はありますか? では、Javascript はサーバー側の変数の現在の値を取得するのでしょうか?