cshtml onclick按钮事件并传值
cshtml onclick button event and pass a value
我一直在寻找解决方案,我有一个按钮功能
html
<button class="snipcart-add-item btn c8-bg c5-text" onclick="AddProduct(item.Id)">
@umbraco.library.GetDictionaryItem("USN Shop Add to Basket Listing")
</button>
item.id 有一个值,因为它在我试图绕过的原始代码中工作
java 脚本是
function AddProduct(ptr) {
$('select').on('click', function () {
s.ajac({
url: '/CartSurface/ProductAddToCart',
data: "{'productId':ptr}",
}).done(function () {
alert('Added');
});
});
console.log("Button Pressed")
}
在 console.log
中按下按钮时出现以下错误
Uncaught ReferenceError: item is not defined at HTMLButtonElement.onclick
控制器
public static void ProductAddToCart(int productId)
{
......
}
我想我错过了一些非常简单但我看不到的东西
以下拥有评论
谢谢 Own 已将代码更改为
function AddProduct(value) {
$('select').on("click", function () {
s.ajac({
url: '/IBDCartSurface/ProductAddToCart',
data: "{'productId': value}",
}).done(function () {
alert('Added');
});
});
console.log(value);
console.log("Button Pressed");
}
<button class="snipcart-add-item btn c8-bg c5-text" onclick="AddProduct(value)" value="@item.Id">
我在控制台和 "Button Pressed" 消息中得到了值,但我的断点没有被触发,警报也没有被触发。
请问s.ajac和$.ajax有什么区别,只是后者找不到url.
注意我也更改了控制器中的控制器名称
Uncaught ReferenceError: item is not defined at
HTMLButtonElement.onclick
您的按钮元素将项目 ID 作为参数传递给 AddProduct。该错误告诉您变量 item
不存在或在当前范围之外。
将您的 JS 更改为:
document.on("click", "#buttonId", function(){
data = $(this).attr("data-id");
s.ajac({
url: '/CartSurface/ProductAddToCart',
data: "{'productId': data}",
}).done(function () {
alert('Added');
});
}
然后将您的 html 更改为
<button class="snipcart-add-item btn c8-bg c5-text" id="buttonId" data-id="item.id">
@umbraco.library.GetDictionaryItem("USN Shop Add to Basket Listing")
</button>
找到了不同的方法。我并不完全理解所有内容,但我明白了它的要点。
在控制器调用中包装按钮,其中 id 是控制器函数的名称。意味着不必从一种代码类型转换为另一种代码类型等。
从 2 个输入标签中检索值
csHtml
using (Html.BeginUmbracoForm<IBDCartSurfaceController>("SiteWideAddToBasket", null, new { @class = "form", role = "form" }))
{
<input type="hidden" id="productPageId" name="productPageId" value="@item.Id" />
<input type="hidden" id="productPrice" name="productPrice" value="@item.ProductCurrentPrice" />
<button class="snipcart-add-item btn c8-bg c5-text" id="addToBasket" type="submit">
@umbraco.library.GetDictionaryItem("USN Shop Add to Basket Listing")
</button>
}
那么Controller就是
[HttpPost]
public ActionResult SiteWideAddToBasket(int productPageId, decimal productPrice)
{
......
}
我一直在寻找解决方案,我有一个按钮功能
html
<button class="snipcart-add-item btn c8-bg c5-text" onclick="AddProduct(item.Id)">
@umbraco.library.GetDictionaryItem("USN Shop Add to Basket Listing")
</button>
item.id 有一个值,因为它在我试图绕过的原始代码中工作
java 脚本是
function AddProduct(ptr) {
$('select').on('click', function () {
s.ajac({
url: '/CartSurface/ProductAddToCart',
data: "{'productId':ptr}",
}).done(function () {
alert('Added');
});
});
console.log("Button Pressed")
}
在 console.log
中按下按钮时出现以下错误Uncaught ReferenceError: item is not defined at HTMLButtonElement.onclick
控制器
public static void ProductAddToCart(int productId)
{
......
}
我想我错过了一些非常简单但我看不到的东西
以下拥有评论
谢谢 Own 已将代码更改为
function AddProduct(value) {
$('select').on("click", function () {
s.ajac({
url: '/IBDCartSurface/ProductAddToCart',
data: "{'productId': value}",
}).done(function () {
alert('Added');
});
});
console.log(value);
console.log("Button Pressed");
}
<button class="snipcart-add-item btn c8-bg c5-text" onclick="AddProduct(value)" value="@item.Id">
我在控制台和 "Button Pressed" 消息中得到了值,但我的断点没有被触发,警报也没有被触发。
请问s.ajac和$.ajax有什么区别,只是后者找不到url.
注意我也更改了控制器中的控制器名称
Uncaught ReferenceError: item is not defined at HTMLButtonElement.onclick
您的按钮元素将项目 ID 作为参数传递给 AddProduct。该错误告诉您变量 item
不存在或在当前范围之外。
将您的 JS 更改为:
document.on("click", "#buttonId", function(){
data = $(this).attr("data-id");
s.ajac({
url: '/CartSurface/ProductAddToCart',
data: "{'productId': data}",
}).done(function () {
alert('Added');
});
}
然后将您的 html 更改为
<button class="snipcart-add-item btn c8-bg c5-text" id="buttonId" data-id="item.id">
@umbraco.library.GetDictionaryItem("USN Shop Add to Basket Listing")
</button>
找到了不同的方法。我并不完全理解所有内容,但我明白了它的要点。
在控制器调用中包装按钮,其中 id 是控制器函数的名称。意味着不必从一种代码类型转换为另一种代码类型等。
从 2 个输入标签中检索值
csHtml
using (Html.BeginUmbracoForm<IBDCartSurfaceController>("SiteWideAddToBasket", null, new { @class = "form", role = "form" }))
{
<input type="hidden" id="productPageId" name="productPageId" value="@item.Id" />
<input type="hidden" id="productPrice" name="productPrice" value="@item.ProductCurrentPrice" />
<button class="snipcart-add-item btn c8-bg c5-text" id="addToBasket" type="submit">
@umbraco.library.GetDictionaryItem("USN Shop Add to Basket Listing")
</button>
}
那么Controller就是
[HttpPost]
public ActionResult SiteWideAddToBasket(int productPageId, decimal productPrice)
{
......
}