URL на бритвенных страницах не отправляет данные на другую страницу - PullRequest
0 голосов
/ 18 октября 2018

Я использую 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);
   }
 }

Теперь проблема в том, когда я хочу передать данныеиспользование JQuery Ajax в Edit.cshtml для 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 не работает.в чем проблема?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Для маршрутизации от Edit до Create вы не можете использовать URL "/Create?handler=SubGroups", который будет генерировать URL-адрес, такой как https://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>
0 голосов
/ 18 октября 2018

Первое, что вы должны сделать, это проверить, выполняется ли даже запрос AJAX.Вы можете сделать это в Chrome и IE / Edge, нажав F12, чтобы вызвать инструменты разработчика, и, открыв вкладку сети, измените значение элемента (Список выбора?) С идентификатором Course_GroupId.Если запрос не сделан, возможно, обработчик события change подключен к неверному элементу или элементу, который не существует.Если запрос сделан, проверьте его URL и ответ.

...