如何获取客户端确认框值以进行服务器端操作?
Posted
技术标签:
【中文标题】如何获取客户端确认框值以进行服务器端操作?【英文标题】:how to get client side confirm box value to make server side operations? 【发布时间】:2012-07-31 13:34:08 【问题描述】:我正在使用客户端脚本来确认消息框,如下所示
string script = "fadeScript";
ScriptManager.RegisterClientScriptBlock(this.Page, script.GetType(), "Script", "Closewindow();", true);
java脚本函数:
<script type="text/javascript">
function Closewindow()
var Result = confirm("Are you sure want to delete?");
alert(Result);
if (Result == true)
document.getElementById('txtConfirmresult').value = Result;//assigning to hidden text box
alert(txtConfirmresult.value);
return true;
else
document.getElementById('txtConfirmresult').value = Result;//assigning to hidden text box
alert('BYE');
return false;
</script>
如果返回true,我想使用.cs 文件中的脚本返回值来激发程序。如果它返回 false 我必须只停留在该特定页面上。请帮我解决这个问题
【问题讨论】:
【参考方案1】:您可以使用__doPostBack(target, argument)
回发到服务器。然后,您可以评估发布数据中的__EVENTTARGET
和__EVENTARGUMENT
,以查看您发回的内容并适当地执行逻辑。 Here is a link that provides a little more in depth information.
一个简单的例子:
脚本/客户端:
<script type="text/javascript">
function Closewindow()
var Result = confirm("Are you sure want to delete?");
alert(Result);
if (Result == true)
var txtConfirmResult = document.getElementById('txtConfirmresult');
txtConfirmResult.value = Result;//assigning to hidden text box
alert(txtConfirmresult.value); //displaying for debug purposes
__doPostBack( 'txtConfirmresult', Result ); //sending back to server.
return true;
else
document.getElementById('txtConfirmresult').value = Result;//assigning to hidden text box
alert('BYE');
return false;
C#
protected void Page_Load(object sender, EventArgs e)
string target = Request["__EVENTTARGET"];
string argument = Request["__EVENTARGUMENT"];
if (target != null && target.Equals( "txtConfirmresult" ) )
this.DoSomeGreatServerSideProcessing(argument);
已更新以添加更正确的变量名称,但假设您的脚本正在运行,则应该可以与您现有的代码库一起使用。我会非常小心地使用 txtConfirmresult
作为您的 ID,因为只有在文本框上未设置 runat="server"
时才有效。如果是这种情况,ID 将被添加到表示容器层次结构的前面。
我建议你很好地命名你的“回调”,例如:
脚本/客户端:
<script type="text/javascript">
function Closewindow()
var Result = confirm("Are you sure want to delete?");
document.getElementById('txtConfirmresult').value = Result;//assigning to hidden text box
if (Result)
__doPostBack( 'UserConfirmedFormSubmission', "CloseWindow" ); //sending back to server.
return true;
else
return false;
C#
protected void Page_Load(object sender, EventArgs e)
string target = Request["__EVENTTARGET"];
string argument = Request["__EVENTARGUMENT"];
if (!string.IsNullOrEmpty(target) && target.Equals("UserConfirmedFormSubmission"))
if ( !string.IsNullOrEmpty(argument) && argument.equals("CloseWindow"))
this.HandleUserRequestedCloseWinow();
【讨论】:
感谢 Torres 的回复,你能用一个例子解释一下如何使用这些 您能提供更多信息吗?你想做什么?您是否可以提出后续问题并链接(如果它不相关)或更新您当前的问题以包含您正在使用的点击事件处理程序代码?以上是关于如何获取客户端确认框值以进行服务器端操作?的主要内容,如果未能解决你的问题,请参考以下文章
使用 jQuery 对 Wordpress 数据库进行服务器端操作