javascript、jQuery 和 ajax 函数在 asp.net MVC 中无法正常工作

标签 javascript jquery asp.net ajax asp.net-mvc

我的问题是,当在 visual studio(2017) 中打开我的 index.cshtml(Asp.net MVC) 时,运行项目,此时 JavaScript 和 jQuery 函数正常工作,但在关闭 index.cshtml 页面后再次运行同样的事情,那个时候 JavaScript 和 jQuery 函数不工作。我发现那些东西在我的 Controller 中设置了断点。 javascript、jQuery 和 ajax 函数的目的是,如果我从下拉列表中选择项目名称,那么时间价格(在文本框内)应该根据项目名称自动出现。
在这里我展示我的代码 索引.cshtml

@model dynamic
@{
    ViewBag.Title = "Index";
}

<!DOCTYPE html>
<html lang="en">
<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    <script src="~/Scripts/jquery-1.10.2.js"></script>
</head>
<body>
    <div class="container-scroller">
               <div class="main-panel">
            <div class="content-wrapper" style="background-color:#bbb9b9">

                <script>
                    $(document).ready(function () {
                        $("#itemname").change(function () {
                            var id = $("#itemname").val();
                            //alert(id);
                            var alldata = "id=" + id;
                            $.ajax({
                                type: "POST",
                                url: "GetPrice",
                                async: false,
                                data: alldata,

                                success: function ($data) {

                                    document.getElementById("p").value = $data;

                                }
                            });
                        });
                    });
                </script>

        <script>
                        function find_Item_id() {
                            var item_n = $("#itemname").val();

                            $.ajax({
                                type: "post",
                                url: "Find_ID_Of_Item",
                                data: { item_n: item_n },
                                success: function ($k) {
                                    //alert($k);
                                    document.getElementById("item_idd").value = $k;
                                }
                            });


                        }
                    </script>


                <h2>Customer Order</h2>
                               <form method="post" action="Final_Customer_Order">
                    <div class="row">                      
                        <div class="col-sm-3">
                            <p>Item Name</p>
                            <select name="item" id="itemname" onchange="find_Item_id()" class="form-control">
                                @foreach (var it in Model.item_data)
                                {
                                    <option value="@it.item_name">@it.item_name</option>
                                }
                            </select>
                            <input type="text" style="display:none" id="item_idd" value="" />
                        </div>


                        <div class="col-sm-3">
                            <p>Price </p><input type="text" name="price" id="p" class="form-control" />
                        </div>


                    </div>

                    <br />

                </form>
            </div>

                 </div>
        <!-- main-panel ends -->
    </div>


    <script src="~/vendors/js/vendor.bundle.base.js"></script>
    <script src="~/vendors/js/vendor.bundle.addons.js"></script>
    <script src="~/js/off-canvas.js"></script>
    <script src="~/js/misc.js"></script>
    <script src="~/js/dashboard.js"></script>
    </body>
</html>  

BillController.cs

 [HttpPost]
        public ActionResult Find_ID_Of_Item(string item_n)
        {
            var d = from k in db.Items.Where(x => x.item_name == item_n) select k;
            return View(d);
        }


        [HttpPost]
        public ActionResult GetPrice(string id)
        {
            List<Item> it = db.Items.Where(x => x.item_name == id).ToList();
            return View(it);
        }

项目.cs

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace Invoice.Models
{
    [Table("Item")]
    public class Item
    {
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        [Key]
        public int item_id { get; set; }
        public string item_name { get; set; }
        public float price { get; set; }
    }
}

_Layout.cshtml

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - My ASP.NET Application</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
    @Scripts.Render("~/Content/jq")
    @Scripts.Render("~/bundles/scripts")
</head>
<body>

    <div class="container body-content">
        @RenderBody()
        <hr />
        <footer>
            <p>&copy; @DateTime.Now.Year - My ASP.NET Application</p>
        </footer>
    </div>
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)
</body>
</html>

BundleConfig.cs

public class BundleConfig
    {

        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.validate*"));


            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                        "~/Scripts/modernizr-*"));
            bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                     "~/Scripts/bootstrap.js",
                     "~/Scripts/respond.js"));

            bundles.Add(new StyleBundle("~/Content/css").Include(
                      "~/Content/bootstrap.css",
                      "~/Content/site.css"));
        }
}

如果有人给出合适的解决方案,那对我会更有帮助。

最佳答案

我认为您的 index.cshtml 没有完全加载。您可以在脚本工作时间和不工作时间检查 url 吗?此外,将这些内容也与 Routeconfig.cs 进行比较。

关于javascript、jQuery 和 ajax 函数在 asp.net MVC 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59523293/

相关文章:

javascript - 如何在 cordova/ionic 应用程序中放置 Google Plus +1 按钮?

javascript - 谷歌应用程序脚本循环范围参数

javascript - $(window).keypress(function()) 在 IE7 中不起作用?

c# - 帮助解决ASP.NET Core 3.1 Application中的 'There is already an open DataReader associated with this Command which must be closed first'

c# - 哪些选项是发布 asp.net 网站项目的最佳性能方式 - 部署

javascript - 有一个脚本在另一个脚本之后触发吗?

javascript - "style-src ' self ' https://maxcdn.bootstrapcdn.com/bootstrap/"。 'unsafe-inline' 关键字,哈希

jquery - 如何在 jQuery 中反序列化一个长查询字符串?

javascript - Kendo Grid 延迟初始化后绑定(bind)点击事件

c# - 从数组构建 if 条件