实际上,你不能这样做。原因是他们不在同一时间“生活”。 Javascript 代码仅在 C#/Razor 渲染后可用。参考这个thread。
所以,我认为你应该在这里使用 ajax 来发送访问GetClientCaseType() 方法的请求。
更新:
关于如何发送ajax post请求,您需要执行以下步骤:
1.在stratup.cs中添加如下服务
services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN");
2.将AntiForgeryToken添加到当前页面
@Html.AntiForgeryToken();
3.在ajax中设置token为请求头
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
这是一个例子:
创建.cshtml:
@page
@model RazorApp.Pages.ClientCases.CreateModel
@Html.AntiForgeryToken();
<button id="btn" onclick="casetype()">Click</button>
@section scripts{
<script>
function casetype() {
var id = 1;
$.ajax({
url: 'Create?handler=GetUploadedFile',
type: "POST",
data: { id : id },
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
success: function (data) {
if (data != null) {
var vdata = data;
}
}
});
}
</script>
}
创建.cshtml.cs:
public class CreateModel : PageModel
{
public void OnGet()
{
}
public IActionResult OnPostGetUploadedFile(int id)
{
var result = "AAA";
return new JsonResult(result);
}
}
注意:页面处理程序的格式应为OnPostXxx() 或OnGetXxx()。
ajax 中的 url 应该是 XXX?handler=Xxx。
结果: