【发布时间】:2015-01-25 08:49:06
【问题描述】:
问题背景。
我有一个视图,其中包含一个按钮,单击该按钮时会传递“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>
控制器 AddToCart 方法:
public void AddToCart(string name, string qty)
{
//Add to cart logic.
}
问题:
如图所示,控制器方法将两个参数都作为“null”传递。
编辑:
我已经尝试了以下所有建议,但仍然将两个参数作为“null”传递。
【问题讨论】:
-
你可以查看这个答案,希望对你有帮助stackoverflow.com/questions/10757001/…
-
您只需要使用
text()而不是val()如果您在其他(正确)答案中指出的那样不起作用,那么这里还有其他问题。一个可能是Model.ElementAt(0).ProductSummary的奇怪用法你是从一个集合中渲染它吗(即你用Model.ElementAt(1)...等重复上面的代码,在这种情况下你有无效的html,你需要更改这个html 并使用相对选择器(不是黑客)
标签: javascript jquery ajax asp.net-mvc asp.net-mvc-4