我正在处理一个带有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文件中。任何建议都是值得感谢的,我认为URL是错误的部分。
发布于 2019-12-17 07:17:31
在URL中,您必须传递Razor页面的路径+方法的名称。像这样:
var url = '/Pages/Index/OnGetSubCategories';或
var url = '/Index/OnGetSubCategories';发布于 2019-12-17 07:39:12
要使用Razor Pages通过Ajax传递URL,请使用以下命令:
var url2 = '@Url.Page("index","SubCategories")';请注意,我们不需要"OnGet“,其余的将由编译器处理。
https://stackoverflow.com/questions/59365320
复制相似问题