问题背景:
我有一个视图,其中包含一个按钮,当按钮被单击时,会传递“p”标签和“h3”标签的内容。这些标签是从对应控制器传递的模型列表中填充的。
在控制器上有一个“AddToCart”方法,它具有从视图中的 Ajax JQuery 函数传递的参数。
问题:
以下显示了 JQuery Ajax 调用和 cshtml 标记。 理想情况下,我希望将内容传递给函数。 目前,我根据它们的 id 从标签中获取信息。
视图标记:
<h3 class="panel-title boldFeatures" id="name">@(Model.ElementAt(0).ProductName)</h3>
<div class="panel-body">
<img src="~/Images/LionToy.png" class="img-circle" id="featuresImages" alt="Work">
<p>@(Model.ElementAt(0).ProductSummary)</p>
<p id="qty">@(Model.ElementAt(0).productPrice)</p>
@Html.ActionLink("Add To Cart", "AddToCart", null, new { id = "addToCart" }, new { @class = "btn btn-primary btn-block" })
Ajax函数:
<script>
$("#addToCart").click(function (e) {
e.preventDefault();
$.ajax({
url: '/HomePage/AddToCart',
type: 'POST',
data: { name: $('#name').val(), qty: $('#qty').val() },
});
});
</script>
Controller AddToCart方法:
public void AddToCart(string name, string qty)
{
//Add to cart logic.
}
问题:
如图所示,控制器方法传递的两个参数都为“null”。
编辑:
我已经尝试了下面所有的建议,但是这两个参数仍然被传递为“null”。
text()
而不是val()
。如果这个方法不能像你在其他(正确的)答案中所指示的那样工作,那么就有其他问题了。其中一个可能是奇怪地使用了Model.ElementAt(0).ProductSummary
。你是从集合中呈现这个吗(例如,你正在重复上面的代码与Model.ElementAt(1)...
等等),在这种情况下,你有无效的 HTML,并且你需要更改这个 HTML 并使用相对选择器(而不是 hack)。 - user3559349