【问题标题】:ASP.net call javascript then return a value to code behind [closed]ASP.net 调用 javascript 然后返回一个值到代码后面 [关闭]
【发布时间】:2012-09-27 00:49:58
【问题描述】:
大家好,我正在通过 PHP 设计的网站在 ASP.net 中设计网站。他们通过 JavaScript 进行表单检查,如果通过验证,则通过 Ajax 提交所有数据。
是否可以通过后面的代码从提交按钮触发一段 JavaScript 并读取返回值 before 我处理回发以保存数据或什么都不做,直到用户更正JavaScript 指示的字段?
【问题讨论】:
标签:
php
jquery
asp.net
postback
【解决方案1】:
如果您在 javascript 中进行验证,我会制作一个隐藏的提交按钮,如果验证通过,则该按钮会被 javascript 按钮点击:
<input type="button" value="validate" onclick="Validate()" />
<asp:Button ID="aspButton" class="aspButton" OnClick="CodeBehindMethod" style="display: none;" />
<script>
function Validate() {
//if validation passes
$(".aspButton").click(); //This is the reason for the class on this button, since
//asp buttons have huge long stupid id names
//else do some kind of error notification
}
</script>
如果您在代码后面进行验证,那么为什么不直接使用提交按钮的回帖呢?
【解决方案2】:
在 .NET 中,按钮控件有一个 onClientClick,您可以在其中输入任何 js 函数或代码。注意,添加return false;在上述代码之后,否则 .net 将触发完整的回发。
这可能很老套,但您也可以考虑为此使用更新面板;只是一个想法。
【解决方案3】:
是的。您可以通过多种方式做到这一点。我更喜欢处理程序,因为它们超轻量级。虽然,拉取他们的 Javascript 并使用 .NET 的验证器可能会减少您的工作量。这是一个示例处理程序,但以防万一:
public class CheckData : IHttpHandler
{
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
string sInputData = context.Request["input_post_var"];
context.Response.ContentType = "text/plain";
if (!String.IsNullOrEmpty(sInputData))
context.Response.Write("1");
else
context.Response.Write("0");
}
}
您可以通过右键单击解决方案中的文件夹、添加新项...、找到通用处理程序来创建其中一个。
您也可以使用 AJAX.NET,但实际上整个框架非常臃肿,如果可以的话,我会避免使用它。不过,这只是偏好。