我正在使用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文件中。任何建议都将不胜感激,我认为网址是错误的部分。
答案 0 :(得分:0)
在URL中,您必须传递“剃刀页面”的路径+方法名称。喜欢:
var url = '/Pages/Index/OnGetSubCategories';
或
var url = '/Index/OnGetSubCategories';
答案 1 :(得分:0)
要使用带有Razor页面的Ajax传递URL,请使用以下命令:
var url2 = '@Url.Page("index","SubCategories")';
请注意,我们不需要“ OnGet”,其余的将由编译器处理。