如何在Javascript中验证服务器端代码

本文关键字:验证 服务器端 代码 Javascript | 更新日期: 2023-09-27 18:22:02

我正在从服务器获取一些值,如果该值为false,我需要在UI上显示警报消息,而不刷新或回发页面。

我目前正在做的是从服务器获取值,我声明一个隐藏控件并将该值存储在隐藏控件中,在aspx页面中,我编写了一个JS方法来检查该值是否为false,并显示警告消息,但问题是我必须在单击代码后面的按钮时执行此操作所以只要我点击这个按钮,JS代码就会在我从服务器获得值之前执行。

    function fnvalidation() {
        if (document.getElementById("<%=hdnCtrl.ClientID%>").value == false) {
            alert('Please submit it again');
            return false;
}
}

在页面加载上,我注册如下:

 btnSave.Attributes.Add("onclick", "return fnvalidation()");

C#代码:

bValidate = CommonUtility.ValidateOutput();
hdnCtrl.Value = bValidate.ToString();//Storing value in hidden variable
if(bvalidate == false)
{
//Call javascript method fnvalidation
}

当来自服务器的值为false时,如何正确调用此JS方法?谢谢

如何在Javascript中验证服务器端代码

如果您的页面需要在不刷新页面的情况下从服务器获取数据,那么您需要使用AJAX。归结为两件事:

  1. 在服务器端代码中创建AJAX端点
  2. 使用客户端代码中的AJAX端点

服务器端代码可能有几个选项。HTTP处理程序,清空和响应并设置新内容类型的空ASPX页面,甚至可能是Web方法?自从我使用WebForms以来,已经有很长一段时间了,所以我现在不能100%确定推荐的方法是什么。但我认为Web方法正是您想要的。所以你的代码后面会有这样的东西:

public partial class MyPage : Page 
{
    [WebMethod]
    public static string GetValue()
    {
        return "some value";
    }
}

然后,假设您使用的是jQuery,那么您将从客户端代码调用该端点:

$.ajax({
    type: "POST",
    url: "MyPage.aspx/GetValue"
}).done(function (data) {
    // respond to the value in "data"
}).error(function () {
    // there was an error
});

现在,您的客户端按钮单击处理程序可以使用它或类似的东西从服务器获取值。如果这是该按钮需要做的全部,那么不要将其设为asp:Button,而只是input type="button",这样它就不会返回整个页面。将其保留为服务器端按钮意味着取消JavaScript中的事件传播,这在异步操作中会变得很糟糕,因为没有立即恢复事件传播的方法,您必须手动调用postback。

我认为你可以使用

Page.ClientScript.RegisterStartupScript

在您的条件内部,if(bvalidate==false)condition-like则无需依赖于要设置的值(即,在java脚本函数中,您可以取消检查隐藏字段值,只需提醒用户即可。您还可以删除此代码btnSave.Attributes.Add("onclick","return fnvalidation()")

Page.ClientScript.RegisterStartupScript(this.GetType(), "validateFnscript", "fnvalidation()", 
true);