【发布时间】:2018-03-06 17:57:39
【问题描述】:
我发现一个页面上有多个处理程序以及相关的命名约定(即 OnPostXXX)和“asp-post-hanlder”标签助手的示例。但是我怎样才能从 AJAX 调用中调用这些方法之一。
我有一个带有典型 MVC 视图和控制器的旧示例,但它如何与 Razor 页面一起使用?
例如,如果我使用基础应用程序并将 About.cshtml 页面修改为以下内容:
@page
@model AboutModel
@{
ViewData["Title"] = "About";
}
<h2>@ViewData["Title"]</h2>
<h3>@Model.Message</h3>
<input type="button" value="Ajax test" class="btn btn-default" onclick="ajaxTest();" />
@section Scripts {
<script type="text/javascript">
function ajaxTest() {
console.log("Entered method");
$.ajax({
type: "POST",
url: '/About', // <-- Where should this point?
contentType: "application/json; charset=utf-8",
dataType: "json",
error: function (xhr, status, errorThrown) {
var err = "Status: " + status + " " + errorThrown;
console.log(err);
}
}).done(function (data) {
console.log(data.result);
})
}
</script>
}
并且在模型页面About.cshtml.cs
public class AboutModel : PageModel
{
public string Message { get; set; }
public void OnGet()
{
Message = "Your application description page.";
}
public IActionResult OnPost() {
//throw new Exception("stop");
return new JsonResult("");
}
}
OnPost 不是从 Ajax 调用中调用的。
【问题讨论】:
-
你想做什么?你能展示你的观点吗?
-
没有“视图”,只有 Razor 页面。我已经扩展了这个例子。
-
docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/… @page 使文件成为 MVC 操作 - 这意味着它直接处理请求,而不通过控制器。 ... URL 路径与页面的关联取决于页面在文件系统中的位置。下表显示了 Razor 页面路径和匹配 URL:文件名和路径匹配 URL /Pages/Index.cshtml / 或 /Index /Pages/Contact.cshtml /Contact /Pages/Store/Contact.cshtml /Store/Contact / Pages/Store/Index.cshtml /Store 或 /Store/Index
标签: c# ajax asp.net-core-2.0 razor-pages