我正在使用Razor Pages,我有两个页面CreateModel
和EditModel
,在CreateModel中OnGetSubGroups
处理程序:
public class CreateModel : PageModel
{
//Dependency Injection is here
public IActionResult OnGetSubGroups(int subId)
{
SubOptions = courseService.CourseSubGroups(subId);
return new JsonResult(SubOptions);
}
}
现在的问题是,当我想在 Edit.cshtml 中使用 JQuery Ajax 将数据传递到OnGetSubGroups
URL 不起作用时:
$('#Course_GroupId').on('change', function (e) {
var optionSelected = $("option:selected", this);
var valueSelected = this.value;
$.ajax({
type: "Get",
data: {
subId: valueSelected,
},
url: "/Create?handler=SubGroups",
contentType: "application/json; charset=utf-8",
dataType: "json"
});
我使用了断点和 URL 剂量不起作用。 问题出在哪里?
对于从Edit
到Create
的路由,你不能使用URL"/Create?handler=SubGroups"
,它会像https://localhost:44389/Create?handler=SubGroups&subId=5
一样生成URL并忽略PageFolder
。我假设CreateModel
不在根文件夹中Pages
.如果是这样,则不应将 URL 与"/Create?handler=SubGroups"
结合使用。
我建议您尝试以下代码:
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
type: "Get",
data: {
subId: 5,
},
url:"@Url.Page("Create", "SubGroups")",
contentType: "application/json; charset=utf-8",
dataType: "json"
});
});
</script>
你应该做的第一件事是检查是否正在发出 AJAX 请求。您可以在Chrome和IE/Edge中执行此操作,方法是按F12以调出开发人员工具,并在更改ID为Course_GroupId
的元素(选择列表?如果未发出任何请求,则可能将change
事件处理程序连接到错误的元素或不存在的元素。如果发出请求,请检查其 URL 和响应。