c# - Asp.net MVC 在不刷新页面的情况下将数据发布到 Controller

标签 c# jquery asp.net-mvc-4

<分区>

我正在发布从下拉列表中选择的值。但在获得我的值(value)页面后会刷新。如何在不刷新页面的情况下将数据发布到 Controller ?

这是 View :

<div class="container">
    <div class="row">
        @foreach (var item in Model)
        {
            using (Html.BeginForm("AddToCart", "Test", new { id = item.ProductId }, FormMethod.Post))
            {


                <div class="col-md-3 col-sm-4 col-xs-6">
                    <img id="ImageClick" onclick="location.href='@Url.Action("ViewProductOnClick", "Home", new { id = item.ProductId })'"
                         src="@Url.Content("~/Content/" + item.ImageURL)" height="200" width="200" alt="@item.ProductName" />
                    <div class="productDetails">
                        <div class="productName">
                            <h5 id="ProductName" class="bold name">Name: @item.ProductName</h5>
                        </div>

                        <div class="productPrice bold" id="ProductPrice">
                            Rs. <span class="unit"> @item.Price</span>
                        </div>
                        <div class="productCart">


                            <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>

                        </div>
                    </div>

                </div>
            }
        }

    </div>
</div>

这是我的 Controller :

    [HttpPost]
    public ActionResult AddToCart(int id, FormCollection collection)
    {
        MyDBContext myDBContext = new MyDBContext();

        if (ModelState.IsValid)
        {
            var cartFill = myDBContext.Products.Find(id);

            int quantity = Convert.ToInt16(collection["Weight"]);

            AddToCart addToCart = new AddToCart(cartFill, quantity);

            if (Session["cart"] == null)
            {
                List<AddToCart> list = new List<AddToCart>();
                list.Add(addToCart);
                Session["cart"] = list;
            }
            else
            {
                List<AddToCart> list = (List<AddToCart>)Session["cart"];
                list.Add(addToCart);
                Session["cart"] = list;
            }
        }
        return RedirectToAction("ViewCart", "Home");
    }

最佳答案

你可以这样做;

1) 你必须为你的 Action 创建部分 View ( Action 是你想发布的)

2) 添加jquery.unobtrusive-ajax的引用。

使用 NuGet 包管理器,您可以将库和引用安装到项目中。 这是包链接 https://www.nuget.org/packages/Microsoft.jQuery.Unobtrusive.Ajax/

3)要正确使用 Ajax.BeginForm 功能,请不要忘记将引用添加到页面中

完成这些后,您可以在 ASP.NET MVC 中使用 Ajax.BeginForm 将数据发布到 Controller ,而无需刷新页面。

有关详细说明,您可以阅读此链接: post-data-without-whole-postback

关于c# - Asp.net MVC 在不刷新页面的情况下将数据发布到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53319914/

相关文章:

c# - 跨域认证 ASP.net MVC

c# - DirectShow 在我用来解密缓冲流的源过滤器 (UNSUPPORTED_STREAM) 上抛出错误

c# - WPF 将 Window 模板中的按钮绑定(bind)到 ViewModel 的命令

c# - Windows 服务中的 Kerberos 身份验证

javascript - 当用户滚动时,jQuery 窗口滚动停止触发

asp.net - 对于复杂的导航菜单,我应该使用数据缓存还是输出缓存?

c# - SQLite 的替代品,具有保护

带远程数据的 JQuery 自动完成 (COLDFUSION)

javascript - jQuery 克隆链接和包装/追加/替换?

asp.net-mvc - 在 ASP.NET MVC4 中使用 HTML.BeginForm 时如何将类定义添加到表单?