繁体   English   中英

缺少)在参数列表之后,当试图调用 JS function onclick

[英]missing ) after argument list, When trying to call JS function onclick

我试图将数据添加到存储在 session 中的 JSON object 中。 我用 js function 做到这一点:

<section class="products">
    @foreach (var prod in Model) {
        string path = "~/images/" + prod.ImgURL;
        <article>
            <a href="@Url.Action("InspectProduct","Products", new {productID = prod.Id})">
            <img src="@Url.Content(path)" style="max-width: 75%"></a>

            <h3><a href="@Url.Action("InspectProduct","Products")">@prod.Name</a></h3>
            <h4>@prod.Price,-</h4>
            <a class="btn-add" style="cursor: pointer;" onclick="addToJSONObject(@prod.Id, @prod.Name, @prod.Price, @prod.Info)">Tilføj til kurv</a>
       </article>
     }
</section>

我使用 MVC,因此使用 Viewbag 中的“@”。 当我单击“按钮”时,它会在几乎每个产品标签上抛出:“参数列表后未捕获的语法错误:缺少)”。

在我开始向 function 添加更多参数之前,它运行良好。 有什么想法可能是错的吗? 我似乎没有遗漏任何“)”或转义。

您发现了一个非常基本的概念,称为“上下文切换”。

如果你看这一行:

"@Url.Action("InspectProduct","Products")"

您会发现第一个"启动您的 html 属性上下文。它应该由另一个结束" 但是,在其他用途之间有四个" 。即,它们开始/结束参数值上下文。

解释器无法区分那些" 。因此,语法错误。

请阅读该问题以及如何用您的编程语言解决该问题。 有时它是 escaping (例如\" ),有时它使用不同的字符串文字(例如' )。

在 ASP.NET MVC 中使用 Razorviews 时,@ 将允许您将 c# 代码直接写入 HTML。 在 foreach 循环中对视图包数据的调用是通过以下方式完成的:

addToJSONObject(@prod.Id, @prod.Name, @prod.Price, @prod.Info)

但是,这不会插入 " 或 ' 因此使用 model 数据作为参数的正确方法(如果需要字符串):

addToJSONObject('@prod.Id', '@prod.Name', '@prod.Price', '@prod.Info')

暂无
暂无

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

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