带剃须刀页面的ASP.net JQuery函数

时间:2019-12-16 22:47:56

标签: asp.net razor

我正在使用Razor Pages开发一个项目,并且正在尝试创建级联的下拉列表。我已经尽力列出并返回了。我遵循了一些教程,但是我无法弄清楚如何正确调用C#函数。f这是我所拥有的:

    <section class="bg-light pt-7 pb-7 pt-md-0 pb-md-8">
        <div class="container position-relative px-md-0">
            <div class="search-box search-box-dark">

                <form method="GET" action="listings-half-screen-map-list.html">

                    @* This will be the first drop down *@
                    <div class="select-default">
                        <select id="scaleID" class="select-location" asp-for="scaleId" asp-items="Model.scl"><option>Choose Scale</option></select>
                    </div>
                    @* This will be the second drop down *@
                    <div class="select-default">
                        <select id="manfID" class="select-location" asp-for="manfId" asp-items="Model.man"><option>Choose Manufacturer</option></select>
                    </div>

                    <div class="select-default">
                        <select id="vechID" class="select-location" asp-items="ViewBag.Vehicles"><option>Choose Vehicle</option></select>
                    </div>

                    <button type="submit" class="btn btn-primary"> Search </button>
                </form>
            </div>
        </div>
    </section>


    <script>
    $("#manfID").change(function () {
        var manF = $("#manfID").val();
        var url = "/Pages/Index";

        $.getJSON(url, { scaleId: manF }, function (data) {  
            var item = "";
            $("#vechID").empty();
            $.each(data, function (i, item) {
                item += '<option value="' + item.value + '">' + item.text + '</option>'
            });
            $("#vechID").html(item);
        });
    });
    </script>

然后这是我的C#代码:

    public JsonResult OnGetSubCategories(int scaleId)
    {
        List<Vehicle> list = new List<Vehicle>();

        list = _context.Vehicles.Where(a => a.ScaleId == scaleId && a.ManufacturerId == manfId).ToList();

        return new JsonResult(list);
    }

两者都在Index.html和index.htmlcs文件中。任何建议都将不胜感激,我认为网址是错误的部分。

2 个答案:

答案 0 :(得分:0)

在URL中,您必须传递“剃刀页面”的路径+方法名称。喜欢:

var url = '/Pages/Index/OnGetSubCategories';

 var url = '/Index/OnGetSubCategories';

答案 1 :(得分:0)

要使用带有Razor页面的Ajax传递URL,请使用以下命令:

   var url2 = '@Url.Page("index","SubCategories")';

请注意,我们不需要“ OnGet”,其余的将由编译器处理。