[英]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.