如何从控制器视图中将数据传递给 jquery
How to pass data to jquery in view from controller
我的控制器中有一个 Viewbag。我想从视图中的 jquery 代码到达它。可能吗?
我想检查我客户的钱是否足够购买产品。如果他们没有足够的钱,我想给他们一个甜蜜的提醒。这可能吗?如果可以,我该怎么做?
那是我的 [GET] 控制器;
public ActionResult inspect(string id, int page = 1)
{
if (id == null)
{
return RedirectToAction("account", "product");
}
ViewBag.href = id;
ViewBag.user = Session["MAIL"];
var valuehrefid = db.TBLPRODUCT.Where(x => x.href == id).Select(y => y.ID).FirstOrDefault();
var accounts = db.TBLACCOUNT.Where(x => x.PRODUCT == valuehrefid && x.status == true).ToList().ToPagedList(page, 10);
return View(accounts);
}
那是我的 [POST] 控制器;
public ActionResult buyaccount(int id)
{
var mail = (string)Session["MAIL"];
var userid = db.TBLUSER.Where(x => x.MAIL == mail).Select(y => y.ID).FirstOrDefault();
var price = db.TBLACCOUNT.Where(x => x.ID == id).Select(y => y.PRICE).FirstOrDefault();
var user = db.TBLUSER.Find(userid);
if (user == null || mail == null)
{
ViewBag.alert = "usernull";
return RedirectToAction("login", "home");
}
var href = db.TBLACCOUNT.Where(x => x.ID == id).Select(y => y.TBLPRODUCT.href).FirstOrDefault();
var customercash = user.CASH;
if (customercash >= price)
{
user.CASH -= price;
var value = db.TBLACCOUNT.Find(id);
value.status = false;
var product = db.TBLACCOUNT.Where(x => x.ID == id).Select(y => y.TBLPRODUCT.ID).FirstOrDefault();
var productd = db.TBLPRODUCT.Find(urun);
product.STOCK -= 1;
var date = DateTime.Parse(DateTime.Now.ToShortDateString());
TBLSALEACTION p = new TBLSALEACTION();
p.CUSTOMER = userid;
p.ACCOUNT = id;
p.PRODUCT = product;
p.DATE = date;
p.PRICE = price;
db.TBLSALEACTION.Add(p);
db.SaveChanges();
ViewBag.Uyari = "successful";
}
else
{
ViewBag.Uyari = "Customer's money is not enough to buy this.";
int sayfa = 1;
var valuehrefid = db.TBLPRODUCT.Where(x => x.href == href).Select(y => y.ID).FirstOrDefault();
var accounts = db.TBLACCOUNT.Where(x => x.PRODUCT == valuehrefid && x.status == true).ToList().ToPagedList(sayfa, 10);
return View("inspect", model: hesaplar);
}
return View("~/Views/accounts/inspect/" + href + ".cshtml", href);
}
这就是我的观点
@if (Session["MAIL"] != null)
{
<script>
$('#TBLACCOUNT').on("click", ".btnBuy", function () {
var btn = $(this);
Swal.fire({
title: 'Warning',
text: "Are you sure to buy this?",
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes',
cancelButtonText: 'No'
}).then((result) => {
if (result.value) {
var id = btn.data("id");
$.ajax({
type: "POST",
url: "/accounts/buyaccount/" + id,
success: function (s) {
if (s) {
btn.parent().parent().remove();
Swal.fire(
'Information ',
'You have successfully purchased!',
'success'
);
} else {
Swal.fire({
type: 'error',
title: 'Error.',
text: 'You dont have enough money.',
confirmButtonText: 'Close'
});
}
}
});
}
});
});
</script>
}
添加这个 class :
public class JsonData
{
public string HtmlUrl{ get; set; }
public string HtmlBody { get; set; }
public bool Success { get; set; }
}
然后在控制器中返回 Json 值:
public ActionResult buyaccount(int id)
{
var mail = (string)Session["MAIL"];
var userid = db.TBLUSER.Where(x => x.MAIL == mail).Select(y => y.ID).FirstOrDefault();
var price = db.TBLACCOUNT.Where(x => x.ID == id).Select(y => y.PRICE).FirstOrDefault();
var user = db.TBLUSER.Find(userid);
if (user == null || mail == null)
{
return Json(new JsonData()
{
HtmlUrl = "/home/login",
HtmlBody = "usernull",
Success = false,
});
}
var href = db.TBLACCOUNT.Where(x => x.ID == id).Select(y => y.TBLPRODUCT.href).FirstOrDefault();
var customercash = user.CASH;
if (customercash >= price)
{
user.CASH -= price;
var value = db.TBLACCOUNT.Find(id);
value.status = false;
var product = db.TBLACCOUNT.Where(x => x.ID == id).Select(y => y.TBLPRODUCT.ID).FirstOrDefault();
var productd = db.TBLPRODUCT.Find(urun);
product.STOCK -= 1;
var date = DateTime.Parse(DateTime.Now.ToShortDateString());
TBLSALEACTION p = new TBLSALEACTION();
p.CUSTOMER = userid;
p.ACCOUNT = id;
p.PRODUCT = product;
p.DATE = date;
p.PRICE = price;
db.TBLSALEACTION.Add(p);
db.SaveChanges();
}
else
{
int sayfa = 1;
var valuehrefid = db.TBLPRODUCT.Where(x => x.href == href).Select(y => y.ID).FirstOrDefault();
var accounts = db.TBLACCOUNT.Where(x => x.PRODUCT == valuehrefid && x.status == true).ToList().ToPagedList(sayfa, 10);
return Json(new JsonData()
{
HtmlUrl = "/accounts/inspect/hesaplar",
HtmlBody = "Customer's money is not enough to buy this.",
Success = false,
});
}
return Json(new JsonData()
{
HtmlUrl = "/accounts/inspect/href",
HtmlBody = "successful",
Success = true,
});
}
在脚本中:
if (s.Success) {
btn.parent().parent().remove();
Swal.fire(
'Information ',
'You have successfully purchased!',
'success'
);
window.location.href = s.HtmlUrl;
} else {
Swal.fire({
type: 'error',
title: 'Error.',
text: s.MsgBody,
confirmButtonText: 'Close'
});
window.location.href = s.HtmlUrl;
}
您无法通过ajax请求将程序转移到另一个视图,但您必须根据情况使用javascript返回所需页面。
我的控制器中有一个 Viewbag。我想从视图中的 jquery 代码到达它。可能吗? 我想检查我客户的钱是否足够购买产品。如果他们没有足够的钱,我想给他们一个甜蜜的提醒。这可能吗?如果可以,我该怎么做?
那是我的 [GET] 控制器;
public ActionResult inspect(string id, int page = 1)
{
if (id == null)
{
return RedirectToAction("account", "product");
}
ViewBag.href = id;
ViewBag.user = Session["MAIL"];
var valuehrefid = db.TBLPRODUCT.Where(x => x.href == id).Select(y => y.ID).FirstOrDefault();
var accounts = db.TBLACCOUNT.Where(x => x.PRODUCT == valuehrefid && x.status == true).ToList().ToPagedList(page, 10);
return View(accounts);
}
那是我的 [POST] 控制器;
public ActionResult buyaccount(int id)
{
var mail = (string)Session["MAIL"];
var userid = db.TBLUSER.Where(x => x.MAIL == mail).Select(y => y.ID).FirstOrDefault();
var price = db.TBLACCOUNT.Where(x => x.ID == id).Select(y => y.PRICE).FirstOrDefault();
var user = db.TBLUSER.Find(userid);
if (user == null || mail == null)
{
ViewBag.alert = "usernull";
return RedirectToAction("login", "home");
}
var href = db.TBLACCOUNT.Where(x => x.ID == id).Select(y => y.TBLPRODUCT.href).FirstOrDefault();
var customercash = user.CASH;
if (customercash >= price)
{
user.CASH -= price;
var value = db.TBLACCOUNT.Find(id);
value.status = false;
var product = db.TBLACCOUNT.Where(x => x.ID == id).Select(y => y.TBLPRODUCT.ID).FirstOrDefault();
var productd = db.TBLPRODUCT.Find(urun);
product.STOCK -= 1;
var date = DateTime.Parse(DateTime.Now.ToShortDateString());
TBLSALEACTION p = new TBLSALEACTION();
p.CUSTOMER = userid;
p.ACCOUNT = id;
p.PRODUCT = product;
p.DATE = date;
p.PRICE = price;
db.TBLSALEACTION.Add(p);
db.SaveChanges();
ViewBag.Uyari = "successful";
}
else
{
ViewBag.Uyari = "Customer's money is not enough to buy this.";
int sayfa = 1;
var valuehrefid = db.TBLPRODUCT.Where(x => x.href == href).Select(y => y.ID).FirstOrDefault();
var accounts = db.TBLACCOUNT.Where(x => x.PRODUCT == valuehrefid && x.status == true).ToList().ToPagedList(sayfa, 10);
return View("inspect", model: hesaplar);
}
return View("~/Views/accounts/inspect/" + href + ".cshtml", href);
}
这就是我的观点
@if (Session["MAIL"] != null)
{
<script>
$('#TBLACCOUNT').on("click", ".btnBuy", function () {
var btn = $(this);
Swal.fire({
title: 'Warning',
text: "Are you sure to buy this?",
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes',
cancelButtonText: 'No'
}).then((result) => {
if (result.value) {
var id = btn.data("id");
$.ajax({
type: "POST",
url: "/accounts/buyaccount/" + id,
success: function (s) {
if (s) {
btn.parent().parent().remove();
Swal.fire(
'Information ',
'You have successfully purchased!',
'success'
);
} else {
Swal.fire({
type: 'error',
title: 'Error.',
text: 'You dont have enough money.',
confirmButtonText: 'Close'
});
}
}
});
}
});
});
</script>
}
添加这个 class :
public class JsonData
{
public string HtmlUrl{ get; set; }
public string HtmlBody { get; set; }
public bool Success { get; set; }
}
然后在控制器中返回 Json 值:
public ActionResult buyaccount(int id)
{
var mail = (string)Session["MAIL"];
var userid = db.TBLUSER.Where(x => x.MAIL == mail).Select(y => y.ID).FirstOrDefault();
var price = db.TBLACCOUNT.Where(x => x.ID == id).Select(y => y.PRICE).FirstOrDefault();
var user = db.TBLUSER.Find(userid);
if (user == null || mail == null)
{
return Json(new JsonData()
{
HtmlUrl = "/home/login",
HtmlBody = "usernull",
Success = false,
});
}
var href = db.TBLACCOUNT.Where(x => x.ID == id).Select(y => y.TBLPRODUCT.href).FirstOrDefault();
var customercash = user.CASH;
if (customercash >= price)
{
user.CASH -= price;
var value = db.TBLACCOUNT.Find(id);
value.status = false;
var product = db.TBLACCOUNT.Where(x => x.ID == id).Select(y => y.TBLPRODUCT.ID).FirstOrDefault();
var productd = db.TBLPRODUCT.Find(urun);
product.STOCK -= 1;
var date = DateTime.Parse(DateTime.Now.ToShortDateString());
TBLSALEACTION p = new TBLSALEACTION();
p.CUSTOMER = userid;
p.ACCOUNT = id;
p.PRODUCT = product;
p.DATE = date;
p.PRICE = price;
db.TBLSALEACTION.Add(p);
db.SaveChanges();
}
else
{
int sayfa = 1;
var valuehrefid = db.TBLPRODUCT.Where(x => x.href == href).Select(y => y.ID).FirstOrDefault();
var accounts = db.TBLACCOUNT.Where(x => x.PRODUCT == valuehrefid && x.status == true).ToList().ToPagedList(sayfa, 10);
return Json(new JsonData()
{
HtmlUrl = "/accounts/inspect/hesaplar",
HtmlBody = "Customer's money is not enough to buy this.",
Success = false,
});
}
return Json(new JsonData()
{
HtmlUrl = "/accounts/inspect/href",
HtmlBody = "successful",
Success = true,
});
}
在脚本中:
if (s.Success) {
btn.parent().parent().remove();
Swal.fire(
'Information ',
'You have successfully purchased!',
'success'
);
window.location.href = s.HtmlUrl;
} else {
Swal.fire({
type: 'error',
title: 'Error.',
text: s.MsgBody,
confirmButtonText: 'Close'
});
window.location.href = s.HtmlUrl;
}
您无法通过ajax请求将程序转移到另一个视图,但您必须根据情况使用javascript返回所需页面。