我正在使用Razor页面,我有两个页面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无效。问题出在哪里?
答案 0 :(得分:2)
要从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>
答案 1 :(得分:0)
您应该做的第一件事是检查是否正在发出AJAX请求。当您更改ID为Course_GroupId
的元素(选择列表?)中的值时,可以在Chrome和IE / Edge中通过单击F12调出开发人员工具并查看“网络”选项卡来实现此目的。如果没有请求,则可能使change
事件处理程序连接到错误的元素或不存在的元素。如果提出请求,请检查其URL和响应。