[英]How to call onclick jquery function having dynamic data, Asp.net Mvc5
我正在使用for-each循环加载软件包,显然是从代码中开始..
<div class="row">
@foreach(var items in ViewBag.packages)
{
<div class="col-md-2">
<div class="price-table-area">
<div class="fixed-img sec-bg5"></div>
<ul class="proce-table">
<li class="price-prdct"><i>$</i>@items.NewPrice<i>/m</i></li>
<input type="submit" class="submit" value="SignUp" onclick="packageSelect(@ViewBag.PackageId)">
</ul>
</div>
</div>
}
</div>
我在单击时调用函数packageSelect
,该函数调用对控制器动作的ajax调用。 可以看出,我正在传递@viewbag.PackageId
参数以起作用。
控制器动作
public ActionResult SelectPackage(int PackageId)
{
Session["Package"] = PackageId;
return this.Json(string.Empty); ;
}
脚本
<script>
function packageSelect(PackageId) {
$.ajax({
type: "POST",
url: '@Url.Action("SelectPackage", "Home")',
dataType: "JSon",
data: { "PackageId": PackageId },
success: function (data) {
console.log(data);
// $("#SecondInfo").focus({ scrollTop: "0px" });
$('html, body').animate({ scrollTop: $('#contact-us').offset().top }, 'slow');
},
error: console.log("it did not work"),
});
};
</script>
这样打电话是正确的方法吗? 问题是未调用函数。
认真地说,我认为这不是实现此目的的好方法。
相反,您应该更清楚地了解它-
使用data
属性。
<button class="submit" data-id="@items.PackageId">SignUp</button>
接着-
$('button').on('click',function(){
var id = $(this).data('id'); //attribute's value
packageSelect(id); //passing the value to function
});
PS-另外,我想您正在迭代ID,如果是,则不应该将其用作-
@ViewBag.PackageId
它应该是(如果迭代并且不会保持不变)- @items.PackageId
您输入的是submit
类型,将其类型更改为button
。 因此,当您单击按钮时, form
将被posted
并且onclick
不会fire
。
<input type="button" class="submit" value="SignUp"
onclick="packageSelect(@ViewBag.PackageId)">
我不认为click以这种方式接受参数。 尝试
<input type="submit" class="submit" value="SignUp"
onclick="function(){packageSelect(@ViewBag.PackageId);}">
我也同意Mairaj的观点,即type ='submit'是可疑的。
为什么需要将ViewId中的PackageId值传递给函数packageSelect? 如果您只是使用ajax调用将值传递给contoller动作,那么我认为可以在ViewBag的action方法中直接访问它。
而且,如果要对另一个控制器操作进行ajax调用,则可以使用TempData集合来存储PackageId。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.