URL 在 razor 页面中不会将数据发送到另一个页面
URL in razor pages dosen't send data to another page
我正在使用 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 不起作用。问题出在哪里?
您应该做的第一件事是检查 AJAX 请求是否正在发出。您可以在 Chrome 和 IE/Edge 中执行此操作,方法是按 F12 调出开发人员工具并在更改元素(Select 列表?)中的值时查看网络选项卡Course_GroupId
的 ID。如果没有发出请求,那么您可能将 change
事件处理程序连接到错误的元素或不存在的元素。如果发出请求,请检查其 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>
我正在使用 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 不起作用。问题出在哪里?
您应该做的第一件事是检查 AJAX 请求是否正在发出。您可以在 Chrome 和 IE/Edge 中执行此操作,方法是按 F12 调出开发人员工具并在更改元素(Select 列表?)中的值时查看网络选项卡Course_GroupId
的 ID。如果没有发出请求,那么您可能将 change
事件处理程序连接到错误的元素或不存在的元素。如果发出请求,请检查其 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>