[英]Asp.net MVC post data to controller
我正在嘗試使用Jquery將數據發布到控制器,jquery不會添加AddToCArt函數。
這是我的看法:
<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
}
任何幫助將不勝感激。
這里幾乎沒有什么地方會出錯。
首先,您正在使用data: Id
,但似乎在此上下文中未定義變量Id
。 您實際上是指data: w8
嗎?
其次,您正在以"data": 123
形式發布數據,但是根據您的操作聲明,期望以"value": 123
形式發布數據。 這些需要同步。
所以看起來您的發布代碼應該像這樣
$.post("/Test/AddToCart",
{
value: w8
});
第三件事是您沒有阻止按鈕的默認行為。 您可以使用return false
或調用preventDefault
這樣做,如下所示:
$("#btnSubmit").click(function (e) {
...
e.preventDefault();
});
您可能需要在操作上使用HttpPost
屬性。
[HttpPost]
public ActionResult AddToCart(int value)
{
if (ModelState.IsValid)
{
//here is some code
}
畢竟,您首先應該做的是檢查瀏覽器開發人員控制台,以了解實際的問題所在。
控制器可能希望傳遞一個整數值。 快速檢查是將此值設置為字符串以查看是否成功。 否則,您可以嘗試以下建議。
嘗試解析權重值
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
});
});
問題:
您的using (Html.BeginForm())
在for循環內。 這意味着您將創建與循環中的元素一樣多的表單標簽。 因此,在開始循環之前,請先放置using (Html.BeginForm())
。
同樣,這將生成多個具有完全相同ID的提交按鈕,這絕對是錯誤的,因為html元素ID必須唯一
請先進行一些更改,然后再嘗試。
<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
});
}
這是工作視圖
<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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.