[英]Execute Server Side from Client Side
我想从客户端执行添加按钮单击事件(服务器端)。
这是我的 javascript function
function validateinput() {
var arrTextBox = document.getElementsByTagName("input");
var retVal = 1;
for (i = 0; i < arrTextBox.length; i++) {
if (arrTextBox[i].type == "text" && arrTextBox[i].value == "") {
retVal = 0;
}
}
if (retVal == 0) {
alert("Validation Failed");
return false;
}
else {
alert("Validation Success");
return true;
__doPostBack(btnAddItem);
}
}
我仅在警报(“验证成功”)并返回 true 时才调用服务器端代码。
这是我的服务器端代码
protected void Page_Load(object sender, EventArgs e)
{
txtbox1.Attributes.Add("onkeydown", "if(event.keyCode) {if (event.keyCode > 57 && event.keyCode <= 90) return false; } else {return true};");
if (!IsPostBack)
{
//The code is too big to be posted
}
}
protected void btnAddItem_Click(object sender, EventArgs e)
{
if (IsValidPost())
{
if (btnAddItem.Text == "Add Item +")
{
if (textbox1.text== "")
{
Addtogrid();
}
}
}
}
我做对了吗? 因为我没有得到预期的结果。 我也在 Page.GetPostBackEventReference(btnAddItem); 说 ClientScript 是一种推荐的方式。 当我尝试使用 ClientScript.GetPostBackEventReference(btnAddItem); 它会抛出一个错误,指出无法识别 ClientScript。
请帮忙
您确定在页面加载方法中需要 GetPostBackEventReference 代码吗? _doPostBack() 不是要引用的目标 object,只是名称。
编辑:为什么在调用 _doPostBack() 之前调用 return true?
编辑 2:有 2 种方法可以调用 GetPostBackEventReference,1)从您的 .NET 代码here ,但这是一个过时的方法,建议使用客户端脚本版本,2)从您的客户端脚本here 。 我不知道您使用的是哪种方法,因为您没有发布页面加载代码。 我看不出有理由根据您发布的其他代码来调用它。 对 _doPostBack() 的调用可以在不获取控件的回发引用的情况下进行。
删除对 GetPostBackEventReference 的调用并将 javascript 更改为如下所示:
function validateinput() {
var arrTextBox = document.getElementsByTagName("input");
var ddlTextBox = document.getElementsByTagName("select");
var retVal = 1;
for (i = 0; i < arrTextBox.length; i++) {
if (arrTextBox[i].type == "text" && arrTextBox[i].getAttribute("IsMandatory") == "Y" && arrTextBox[i].value == "") {
retVal = 0;
}
}
if (retVal == 0) {
alert("Validation Failed");
return false;
}
else {
alert("Validation Success");
__doPostBack('btnAddItem', '');
return true; // This shouldn't be needed but it does need to come after _doPostBack()
}
}
编辑 3:为按钮尝试以下代码:
<asp:Button ID="btnAddItem" runat="server" onclick="btnAddItem_Click" OnClientClick ="javascript:validateinput(); return false;" Text="Add Item +" Width="85px" />
如果您不希望 OnClientClick 代码回发到表单,则需要返回 false。 即使您从调用的 JavaScript 方法返回 false,它仍然会回发。 这对我来说从来没有意义,但我通过反复遇到同样的问题而学会了这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.