首页 > 解决方案 > 剃刀页面中的 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 不起作用。问题出在哪里?

标签: jqueryasp.net-core-mvcrazor-pagesjquery-ajaxq

解决方案


Edit对于从到的路由Create,您不能使用"/Create?handler=SubGroups"会生成类似 URL的 URLhttps://localhost:44389/Create?handler=SubGroups&subId=5并忽略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>

推荐阅读