我正在尝试使用Jquery向控制器发布数据,AddToCArt函数没有被jquery击中。
这是我的观点:
<div class="row">
@foreach (var item in Model)
{
using (Html.BeginForm())
{
@{
<!--List For Kgs to populate dropDown-->
List<SelectListItem> KgItems = new List<SelectListItem>();
KgItems.Add(new SelectListItem { Text = "1 kg", Value = "1" });
<!--List of Dozens to populate dropDown-->
List<SelectListItem> DozenItems = new List<SelectListItem>();
DozenItems.Add(new SelectListItem { Text = "1 Dozen", Value = "1" });
if (item.WeightType == "Kg")
{
@Html.DropDownList("Weight", (IEnumerable<SelectListItem>)KgItems, new { @class = "form-control" })
}
else if (item.WeightType == "Dozen")
{
@Html.DropDownList("Weight", (IEnumerable<SelectListItem>)DozenItems, new { @class = "form-control" })
}
}
</div>
<div class="col-lg-6 col-md-12 col-sm-12 col-xs-12 no-padding">
<input type="submit" class="btn btn-success" id="btnSubmit" value="Add to Cart" />
</div>
这是我的Jquery:-
<script>
$("#btnSubmit").click(function () {
var w8 = $("#Weight option:selected").text();
alert("Selected Weight " + w8);
$.post("/Test/AddToCart",
{
value: w8
});
});
这是我的控制器:-
public void AddToCart(int value)
{
if (ModelState.IsValid)
{
//here is some code
}
任何帮助将不胜感激。
答案 0 :(得分:0)
这里很少有可能出错的地方。
首先,您正在使用data: Id
,但是在此上下文中似乎未定义变量Id
。您实际上是说data: w8
吗?
第二,您以"data": 123
格式发布数据,但是根据您的操作声明,期望以"value": 123
格式发布数据。这些需要同步。
所以您的邮政编码看起来应该像这样
$.post("/Test/AddToCart",
{
value: w8
});
第三件事是您没有阻止按钮的默认行为。您可以使用return false
或致电preventDefault
来这样做,就像这样:
$("#btnSubmit").click(function (e) {
...
e.preventDefault();
});
答案 1 :(得分:0)
您的操作上可能需要HttpPost
属性。
[HttpPost]
public ActionResult AddToCart(int value)
{
if (ModelState.IsValid)
{
//here is some code
}
毕竟,您首先应该做的是检查浏览器开发者控制台,看看实际的问题是什么。
答案 2 :(得分:0)
控制器可能希望传递一个整数值。快速检查是将此值设置为字符串以查看是否成功。否则,您可以尝试以下建议。
尝试解析重量值
var weightValue = parseInt(w8);
下面的更新代码:
<script>
$("#btnSubmit").click(function () {
var w8 = $("#Weight option:selected").text();
var weightValue = parseInt(w8);
alert("Selected Weight " + weightValue);
$.post("/Test/AddToCart",
{
value: weightValue
});
});
问题:
答案 3 :(得分:0)
您的using (Html.BeginForm())
在for循环内。这意味着您将创建与循环中的元素一样多的表单标签。因此,在开始循环之前,请先放置using (Html.BeginForm())
。
这还会生成多个具有完全相同ID的提交按钮,这绝对是错误的,因为html元素ID必须是唯一的
答案 4 :(得分:0)
请先进行一些更改,然后再尝试。
<input type="submit" class="btn btn-success" id="btnSubmit" value="Add to Cart" />
**TO**
<input type="button" class="btn btn-success" id="btnSubmit" value="Add to Cart" />
还有
$.post("/Test/AddToCart",
{
value: w8
});
**TO**
$.post('@Url.Action("Test", "AddToCart")',
{
value: +w8
});
和
public void AddToCart(int value)
{
if (ModelState.IsValid)
{
//here is some code
}
}
**TO**
[HttpPost]
public void AddToCart(int value)
{
if (ModelState.IsValid)
{
//here is some code
}
}
编辑
<div class="row">
@using (Html.BeginForm())
{
foreach (var item in Model)
{
@{
<!--List For Kgs to populate dropDown-->
List<SelectListItem> KgItems = new List<SelectListItem>();
KgItems.Add(new SelectListItem { Text = "1 kg", Value = "1" });
<!--List of Dozens to populate dropDown-->
List<SelectListItem> DozenItems = new List<SelectListItem>();
DozenItems.Add(new SelectListItem { Text = "1 Dozen", Value = "1" });
if (item.WeightType == "Kg")
{
@Html.DropDownList("Weight"+@item.id, (IEnumerable<SelectListItem>)KgItems, new { @class = "form-control" })
}
else if (item.WeightType == "Dozen")
{
@Html.DropDownList("Weight"+@item.id, (IEnumerable<SelectListItem>)DozenItems, new { @class = "form-control" })
}
}
</div>
<div class="col-lg-6 col-md-12 col-sm-12 col-xs-12 no-padding">
<input type="buton" class="btn btn-success" onclick="funcationname(@item.id)" id="btnSubmit" value="Add to Cart" />
</div>
}
}
</div>
funcationname(id)
{
var w8 = $("#Weight"+ id + " option:selected").text();
$.post("/Test/AddToCart",
{
value: +w8
});
}
答案 5 :(得分:0)
这是工作视图
<div class="row">
@foreach (var item in Model)
{
@using (Html.BeginForm())
{
@{
<!--List For Kgs to populate dropDown-->
List<SelectListItem> KgItems = new List<SelectListItem>();
KgItems.Add(new SelectListItem { Text = "1 kg", Value = "1" });
<!--List of Dozens to populate dropDown-->
List<SelectListItem> DozenItems = new List<SelectListItem>();
DozenItems.Add(new SelectListItem { Text = "1 Dozen", Value = "1" });
if (item.WeightType == "Kg")
{
@Html.DropDownList("Weight", (IEnumerable<SelectListItem>)KgItems, new { @class = "form-control" })
}
else if (item.WeightType == "Dozen")
{
@Html.DropDownList("Weight", (IEnumerable<SelectListItem>)DozenItems, new { @class = "form-control" })
}
}
}
}
</div>
<div class="col-lg-6 col-md-12 col-sm-12 col-xs-12 no-padding">
<input type="submit" class="btn btn-success" id="btnSubmit" value="Add to Cart" />
</div>
正在运行的Jquery:-
<script>
$("#btnSubmit").click(function () {
var w8 = $("#Weight option:selected").val();
alert("Selected Weight " + w8);
$.post("/Home/AddToCart",
{
value: w8
});
});
这是工作控制器:-
public void AddToCart(int value)
{
if (ModelState.IsValid)
{
//here is some code
}
}