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