剃刀页面中的 URL 不会将数据发送到另一个页面



我正在使用Razor Pages,我有两个页面CreateModelEditModel,在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 将数据传递到OnGetSubGroupsURL 不起作用时:

$('#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 剂量不起作用。 问题出在哪里?

对于从EditCreate的路由,你不能使用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 和响应。

相关内容

  • 没有找到相关文章

最新更新