【问题标题】:How to use JavaScript on the server side of a WebMatrix site如何在 WebMatrix 站点的服务器端使用 JavaScript
【发布时间】:2013-01-16 17:26:09
【问题描述】:

我有一个只有 1 个页面的简单网站,其中有一个只有 1 个字段和一个提交按钮的表单。

它要求提供电话号码并使用表单中捕获的电话号码的值调用存储过程。提交后,它会反馈用户说该号码已提交,并停留在页面上,以便用户输入另一个电话号码。

所以我创建了一个如下所示的 cshtml 文件:

@{
string pn=Request.Form["pn"]
and then my code to call the stored procedure with pn as a parameter
}

我遇到的问题是,当我转到此页面时,服务器端抛出一个错误,指出存储的 proc 需要一个未提供的参数。

因此,我想创建一个 JavaScript 函数,该函数将运行页面的 onload,如果 pn 具有值,则该页面只会调用存储的过程。

我该怎么做,我应该把代码放在哪里(@{} 块内的 JS?)

顺便说一句,到目前为止,我有 2 页。第一个,没有任何服务器端代码,第二个是副本,加上服务器端代码。

【问题讨论】:

    标签: javascript razor webmatrix


    【解决方案1】:

    首先,您不需要 JavaScript 函数来验证您的输入客户端,而是需要一个服务器端代码来测试表单是否已提交以及您的字段中是否有有效值。

    类似:

    @{
        if (IsPost)
        {
            string pn=Request.Form["pn"];
            if (!string.IsNullOrEmpty(pn)){
                /* your code to call the stored procedure */
            }
        }
    }
    

    如果你想加深这个主题,看这个教程:Introduction to Working with a Database in ASP.NET Web Pages (Razor) Sites

    【讨论】:

    • 非常感谢。这绝对解决了一个问题,但又引入了另一个问题......当用户提交电话号码时,我有 HTML 回复用户 <p><b>Phone number @pn was added to the Dialer Do Not Call list.</b></p> 但现在页面无法解析,因为它不知道什么pn 是。所以我尝试将else pn=""; 添加到您的代码中,但仍然没有帮助。有没有办法让我可以在@{} 中包含的代码中设置一个“全局”变量,然后在 JS 或 HTML 中引用它?再次感谢。
    • 真相是你给出了答案。剩下的我会问一个新问题。
    猜你喜欢
    • 2011-03-28
    • 2015-01-21
    • 1970-01-01
    • 2012-02-07
    • 2011-08-21
    • 2011-05-09
    • 2017-08-09
    • 2020-10-22
    • 1970-01-01
    相关资源
    最近更新 更多