C# 如何在Javascript中验证服务器端代码
我正在从服务器获取一些值,如果该值为false,我需要在UI上显示警报消息,而不刷新或回发页面 我目前正在做的是从服务器获取值,我声明一个隐藏控件并将该值存储在隐藏控件中,在aspx页面中,我编写一个JS方法来检查该值是否为false显示警报消息,但问题是我必须单击代码隐藏中的按钮来执行此操作 所以只要我点击那个按钮,JS代码就会在我从服务器获取值之前被执行C# 如何在Javascript中验证服务器端代码,c#,javascript,C#,Javascript,我正在从服务器获取一些值,如果该值为false,我需要在UI上显示警报消息,而不刷新或回发页面 我目前正在做的是从服务器获取值,我声明一个隐藏控件并将该值存储在隐藏控件中,在aspx页面中,我编写一个JS方法来检查该值是否为false显示警报消息,但问题是我必须单击代码隐藏中的按钮来执行此操作 所以只要我点击那个按钮,JS代码就会在我从服务器获取值之前被执行 function fnvalidation() { if (document.getElementById("&l
function fnvalidation() {
if (document.getElementById("<%=hdnCtrl.ClientID%>").value == false) {
alert('Please submit it again');
return false;
}
}
C#代码:
当来自服务器的值为false时,如何正确调用此JS方法?
谢谢。我想你可以用
Page.ClientScript.RegisterStartupScript
在您的条件中,如果(bvalidate==false)条件类似,则无需依赖要设置的值(即在java脚本函数中,您可以删除检查隐藏字段值,只需提醒用户即可)。
您还可以删除此代码btnSave.Attributes.Add(“onclick”,“return fnvalidation()”)
如果您的页面需要在不刷新页面的情况下从服务器获取数据,那么您需要使用AJAX。这可以归结为两件事:
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中的事件传播,因为无法立即恢复事件传播,因此在异步操作中会变得很糟糕,您必须手动调用回发按钮。该按钮是否需要是asp:button代码>?如果它只是一个输入类型=“按钮”
然后,您可以使用JavaScript对其进行响应,而无需将任何内容自动发送到服务器。此外,当页面最初加载时,值是否存在?或者当按下按钮时,页面是否需要从服务器获取值?如果是前者,只需检查隐藏字段中已经存在的值。如果是后者,不要使用隐藏字段,创建一个AJAX处理程序服务器端,客户端代码可以调用该服务器端来获取值。是的,这是服务器端按钮asp按钮,当按钮未在页面加载时需要获取值。你能告诉我如何创建AJAX处理程序服务器端示例吗..请让我知道代码行是什么吗u放入javascript函数。假设代码中的btnSave按钮点击处理程序,首先进行验证,如果保存else的过程有效,则调用javascript函数发出警报。如果没有附加返回false的客户端点击,则btnSave最好回发。函数fnvalidation(){alert()(“请再次提交”);返回false;}我的要求是页面应该刷新,不应该回发。'我的要求是页面应该刷新,不应该回发。'我在理解这个要求方面没有什么困难。如果您正在查看以下内容。在javascript函数中,在alert语句之后添加以下行。window.location。href=''且无需保留return false语句抱歉…我的要求是页面不应刷新,也不应回发…在条件为false时显示警报弹出窗口哦..好的..如果是这种情况,那么您需要遵循David的建议。您必须依靠AJAX来实现这一点。
Page.ClientScript.RegisterStartupScript(this.GetType(), "validateFnscript", "fnvalidation()",
true);
public partial class MyPage : Page
{
[WebMethod]
public static string GetValue()
{
return "some value";
}
}
$.ajax({
type: "POST",
url: "MyPage.aspx/GetValue"
}).done(function (data) {
// respond to the value in "data"
}).error(function () {
// there was an error
});