为什么这些 cookie 代码在 asp.net mvc 中不起作用?
why these cookie codes didn't work in asp.net mvc?
我正在开发一个 asp.net mvc 5
在线商店项目。我想创建 cart
以添加带有 Cookie
的商品。我对此感到困惑,不知道为什么它不起作用。它没有给我任何错误。我还添加了断点来调试它,但任何数据都没有发送到我的操作中!
谁能帮我?有什么问题 ?
我不擅长 javascript
,我认为问题出在 javascript 代码中:/
提前致谢
货品管理员
[HttpPost]
public ActionResult AddToCart(int Id, int Count)
{
try
{
if (Request.Cookies.AllKeys.Contains("NishtmanCart_" + Id.ToString()))
{
//edit cookie
var cookie = new HttpCookie("NishtmanCart_" + Id.ToString(), (Convert.ToInt32(Request.Cookies["NishtmanCart_" + Id.ToString()].Value) + 1).ToString());
cookie.Expires = DateTime.Now.AddMonths(1);
cookie.HttpOnly = true;
Response.Cookies.Set(cookie);
}
else
{
//add new cookie
var cookie = new HttpCookie("NishtmanCart_" + Id.ToString(), Count.ToString());
cookie.Expires = DateTime.Now.AddMonths(1);
cookie.HttpOnly = true;
Response.Cookies.Add(cookie);
}
int CartCount = Request.Cookies.AllKeys.Where(p => p.StartsWith("NishtmanCart_")).Count();
return Json(new MyJsonData()
{
Success = true,
Script = MessageBox.Show("product added to your basket", MessageType.Success).Script,
Html = "Shopping Cart (" + CartCount.ToString() + ")"
});
}
catch (Exception)
{
return Json(new MyJsonData()
{
Success = false,
Script = MessageBox.Show("product didn't add to your basket", MessageType.Error).Script,
Html = ""
});
}
}
public ActionResult RemoveCart(int Id)
{
try
{
int CartCount = Request.Cookies.AllKeys.Where(p => p.StartsWith("NishtmanCart_")).Count();
if (Request.Cookies.AllKeys.Contains("NishtmanCart_" + Id.ToString()))
{
Request.Cookies["NishtmanCart_" + Id.ToString()].Expires = DateTime.Now.AddDays(-1);
return Json(new MyJsonData()
{
Success = true,
Script = MessageBox.Show("product removed from your basket", MessageType.Success).Script,
Html = "Shopping Cart (" + CartCount.ToString() + ")"
});
}
else
{
return Json(new MyJsonData()
{
Success = false,
Script = MessageBox.Show("this product doesn't have in your basket", MessageType.Warning).Script,
Html = "Shopping Cart (" + CartCount.ToString() + ")"
});
}
}
catch (Exception)
{
return Json(new MyJsonData()
{
Success = true,
Script = MessageBox.Show("product didn't remove from your basket", MessageType.Error).Script,
Html = ""
});
}
}
MyJsonData.cs
public class MyJsonData
{
public string Script { get; set; }
public string Html { get; set; }
public bool Success { get; set; }
}
_GoodDetailsAjax.cshtml
@foreach (var item in Model.GoodDetails)
{
<div>
<p class="nowprice">NowPrice : @item.DetailsNowPrice</p>
<p class="preprice">PrePrice : @item.DetailsPrePrice</p>
<a class="button icon-cart" href="#" GoodID="@item.DetailsGoodID">Add to cart</a><br>
<a class="link" >Shopping Cart (0)</a>
</div>
}
@section scripts{
<script src="~/Scripts/jquery-2.1.4.min.js"></script>
<script src="~/Scripts/bootstrap.min.js"></script>
<script>
$(function () {
$("a.button.icon-cart").click(function (e) {
e.preventDefault();
var goodId = $(this).attr("GoodID");
alert(goodId); //////// I just added this code
$.ajax({
url: "/Goods/AddToCart",
data: { Id: goodId, Count: 1 },
type: "Post",
dataType: "Json",
success: function (result) {
if (result.Success) {
$("#CartItems").html(result.Html);
}
eval(result.Script);
},
error: function () {
alert("Error!");
}
});
});
});
</script>
}
我不知道 MessageBox.Show("....", MessageType.Error).Script
的实现是什么,但我假设它只是生成一个简单的 JavaScript 语句,如下所示:
Script = "alert('product added to your basket');"
因此您可以为结果添加此标签:
<div id="CartItems">
</div>
现在可以正常使用了。
我的所有代码都是真实的,我只是犯了一些简单的错误。
我在我的布局中加载了一个 JQuery 文件,还在我的视图中加载了另一个版本的 JQuery!我删除了其中一个。
而且我在局部视图中使用了这些代码并使用 Ajax 加载它们但是我的局部视图无法将数据传递给 Controller ,我将代码移到了主视图 (GoodDetails.cshtml
) 并且现在可以正常使用了。
我正在开发一个 asp.net mvc 5
在线商店项目。我想创建 cart
以添加带有 Cookie
的商品。我对此感到困惑,不知道为什么它不起作用。它没有给我任何错误。我还添加了断点来调试它,但任何数据都没有发送到我的操作中!
谁能帮我?有什么问题 ?
我不擅长 javascript
,我认为问题出在 javascript 代码中:/
提前致谢
货品管理员
[HttpPost]
public ActionResult AddToCart(int Id, int Count)
{
try
{
if (Request.Cookies.AllKeys.Contains("NishtmanCart_" + Id.ToString()))
{
//edit cookie
var cookie = new HttpCookie("NishtmanCart_" + Id.ToString(), (Convert.ToInt32(Request.Cookies["NishtmanCart_" + Id.ToString()].Value) + 1).ToString());
cookie.Expires = DateTime.Now.AddMonths(1);
cookie.HttpOnly = true;
Response.Cookies.Set(cookie);
}
else
{
//add new cookie
var cookie = new HttpCookie("NishtmanCart_" + Id.ToString(), Count.ToString());
cookie.Expires = DateTime.Now.AddMonths(1);
cookie.HttpOnly = true;
Response.Cookies.Add(cookie);
}
int CartCount = Request.Cookies.AllKeys.Where(p => p.StartsWith("NishtmanCart_")).Count();
return Json(new MyJsonData()
{
Success = true,
Script = MessageBox.Show("product added to your basket", MessageType.Success).Script,
Html = "Shopping Cart (" + CartCount.ToString() + ")"
});
}
catch (Exception)
{
return Json(new MyJsonData()
{
Success = false,
Script = MessageBox.Show("product didn't add to your basket", MessageType.Error).Script,
Html = ""
});
}
}
public ActionResult RemoveCart(int Id)
{
try
{
int CartCount = Request.Cookies.AllKeys.Where(p => p.StartsWith("NishtmanCart_")).Count();
if (Request.Cookies.AllKeys.Contains("NishtmanCart_" + Id.ToString()))
{
Request.Cookies["NishtmanCart_" + Id.ToString()].Expires = DateTime.Now.AddDays(-1);
return Json(new MyJsonData()
{
Success = true,
Script = MessageBox.Show("product removed from your basket", MessageType.Success).Script,
Html = "Shopping Cart (" + CartCount.ToString() + ")"
});
}
else
{
return Json(new MyJsonData()
{
Success = false,
Script = MessageBox.Show("this product doesn't have in your basket", MessageType.Warning).Script,
Html = "Shopping Cart (" + CartCount.ToString() + ")"
});
}
}
catch (Exception)
{
return Json(new MyJsonData()
{
Success = true,
Script = MessageBox.Show("product didn't remove from your basket", MessageType.Error).Script,
Html = ""
});
}
}
MyJsonData.cs
public class MyJsonData
{
public string Script { get; set; }
public string Html { get; set; }
public bool Success { get; set; }
}
_GoodDetailsAjax.cshtml
@foreach (var item in Model.GoodDetails)
{
<div>
<p class="nowprice">NowPrice : @item.DetailsNowPrice</p>
<p class="preprice">PrePrice : @item.DetailsPrePrice</p>
<a class="button icon-cart" href="#" GoodID="@item.DetailsGoodID">Add to cart</a><br>
<a class="link" >Shopping Cart (0)</a>
</div>
}
@section scripts{
<script src="~/Scripts/jquery-2.1.4.min.js"></script>
<script src="~/Scripts/bootstrap.min.js"></script>
<script>
$(function () {
$("a.button.icon-cart").click(function (e) {
e.preventDefault();
var goodId = $(this).attr("GoodID");
alert(goodId); //////// I just added this code
$.ajax({
url: "/Goods/AddToCart",
data: { Id: goodId, Count: 1 },
type: "Post",
dataType: "Json",
success: function (result) {
if (result.Success) {
$("#CartItems").html(result.Html);
}
eval(result.Script);
},
error: function () {
alert("Error!");
}
});
});
});
</script>
}
我不知道 MessageBox.Show("....", MessageType.Error).Script
的实现是什么,但我假设它只是生成一个简单的 JavaScript 语句,如下所示:
Script = "alert('product added to your basket');"
因此您可以为结果添加此标签:
<div id="CartItems">
</div>
现在可以正常使用了。
我的所有代码都是真实的,我只是犯了一些简单的错误。
我在我的布局中加载了一个 JQuery 文件,还在我的视图中加载了另一个版本的 JQuery!我删除了其中一个。
而且我在局部视图中使用了这些代码并使用 Ajax 加载它们但是我的局部视图无法将数据传递给 Controller ,我将代码移到了主视图 (GoodDetails.cshtml
) 并且现在可以正常使用了。