1

我需要在我们网站的表单中实施一些第 3 方字段验证。目前,我们的表单字段的验证是通过使用 ASP.NET 验证器(必需,正则表达式)完成的,我想在我们不会使用新验证的字段上继续使用这些。为我们提供新验证服务的公司为我们提供了所有代码以集成到我们的网站中以获得新的验证功能,而基本实现只需要我们调用一个 javascript 方法来读取指定字段的值并通过验证它们几个服务电话。此外,实现要求表单最初具有onsubmit="return false;"属性集。

我遇到的问题是当验证脚本尝试提交表单时(在验证后函数删除表单的 onsubmit 属性之后),因为事件验证已打开(不是关闭选项),页面抛出异常“无效的回发或回调参数”。也许我提供了过多的细节来给出上下文,但问题可能归结为:如果启用了事件验证而不会导致此错误,您能否使用 javascript 提交 ASP.NET 表单?如果是这样,怎么办?

4

2 回答 2

1

您可以在 JavaScript 函数中调用回帖,如下所示:

<script type="text/javascript">
    function DoValidation(parameter)
    {
        // Do calls to validation services here

        // If all validation passes, then call this
        if(valid) {
            __doPostBack('btnSave', parameter)
        }
    }
</script>

<asp:Button id="btnSave" runat="server" OnClientClick="DoValidation()" 
            Text="Save" />

注意:btnSave是一个虚构的名称,但它应该代表通常执行回发的服务器端控件。

现在,在您的页面Page_Load事件中,您可以确定谁发起了回发以及随其发送的任何数据,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    // Get the control that caused the post back (btnSave)
    Request["__EVENTTARGET"];

    // Get the parameter value (parameter)
    string parameter = Request["__EVENTARGUMENT"];
}
于 2013-09-12T20:07:26.270 回答
0

是的你可以。像这样的东西,请多多包涵,这只是伪代码。

<header>
<script type="text/javascript">
    function JavaScriptSave()
    {
        // Validations here

        if(passed)
        {
            __doPostBack('<%=MyButton.ClientID %>','OkToSave');
        }
    }
</script>
</header>

<asp:button id="MyButton" runat="server" Text="Submit Button" OnClientClick="JavaScriptSave()" />

然后在背面:

protected void Page_Load(object sender, EventArgs e)
{
    string passedInValue = Request["__EVENTARGUMENT"];
    if(passedInValue = "OkToSave")
    {
        // perform save function here
    }
    ...
    if(IsPostBack)
        return;
}
于 2013-09-12T20:16:35.573 回答