繁体   English   中英

从 JavaScript 传值到 C# ASP.NET 核心 Razor SQL 查询的页面

[英]Passing values from JavaScript to C# ASP.NET Core Razor Pages for SQL Querying

我正在制作一个简单的网上商店应用程序原型,需要将购物车项目(存储在 localStorage 中)传递给我们的 SQLServer。 localStorage如下

 {"grootfigure":{"name":"Groot figure","tag":"grootfigure","price":600,"inCart":2},"owlfigure":{"name":"Owl figure","tag":"owlfigure","price":350,"inCart":4},"dragonfigure":{"name":"Dragon figure","tag":"dragonfigure","price":475,"inCart":5}}

第一个想法是将购物车中每个产品的数量传递给 C# 中的每个计数器变量,然后使用 C# 中的单独方法运行 SQL 查询。 但这似乎很难实现。

当我试图通过 JS 和 C# 之间传递变量时

function addOwl(){
            @Globals.String = localStorage.getItem('productsInCart')
            alert(@Globals.String)

            
        }

我在 web 浏览器控制台中得到这个

Uncaught ReferenceError: addOwl is not defined at HTMLButtonElement.onclick (cart:71:68)

有什么想法可以轻松地从 localStorage 值运行 SQL 查询吗? 谢谢

您需要了解 JavaScript 和 C# 在 Razor 页面中的执行位置、时间和方式。

C# 在服务器上执行,然后 output 被发送到浏览器。 一旦服务器执行 C# 代码,它就会生成文本(可能是纯文本,HTML、CSS、JavaScript 等),然后将其发送出去。 然后它丢弃该请求。

相比之下,JavaScript在浏览器中执行,不会在服务器上执行。 它对C#一无所知,不能直接调用C#代码。

具体来说,代码行......

@Globals.String = localStorage.getItem('productsInCart')

..将被服务器端 C# 解释为“获取名为Globals的 C# object 的String属性的值,并将其插入将发送到浏览器的 output 中。”

鉴于您可能没有,我预计此时会出现编译器错误。 如果您不明白这一点,那么您似乎没有向我们讲述完整的故事。

假设它可以找到这样一个 object 具有这样的属性,假设它的值为jim ,这将意味着以下文本(这很重要,服务器将所有这些视为文本,它不知道 JavaScript,并且不会尝试解释它)将被发送到浏览器......

function addOwl(){
            jim = localStorage.getItem('productsInCart')
            alert(jim)

            
        }

这几乎肯定不是你想要的。

因此,要回答您的基本问题,将数据从您的 JavaScript 发送到服务器(将在您的 C# 中使用)的方法是使用 AJAX。还有其他方法,但这可能是最简单的。

如果您使用 jQuery,那么它会为您提供 JavaScript 函数,使这相对容易。 您需要编写一些 C# 代码来接受 AJAX 请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM