微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在视图中从控制器向 jquery 传递数据

如何解决如何在视图中从控制器向 jquery 传递数据

我的控制器中有一个 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>
        }

解决方法

添加这个类:

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.",});
        }
        
         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返回所需的页面。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。