Asp.net core 如何将客户端单击事件添加到ASP.NET Core 2.2 Razor页面中的div to call方法
我在Razor页面中创建了一个日历,我想让每个日期(一个div)都可以单击,这样他们就可以调用一个方法并将单击的日期(div id设置为date)传递给它。我正在cs页面中生成日历,并且没有使用MVC控制器Asp.net core 如何将客户端单击事件添加到ASP.NET Core 2.2 Razor页面中的div to call方法,asp.net-core,razor-2,Asp.net Core,Razor 2,我在Razor页面中创建了一个日历,我想让每个日期(一个div)都可以单击,这样他们就可以调用一个方法并将单击的日期(div id设置为date)传递给它。我正在cs页面中生成日历,并且没有使用MVC控制器 @model Budget.Pages.CalendarModel @{ ViewData["Title"] = "Calendar"; } <form method="post"> @Html.Raw(Model.getCal()) </form>
@model Budget.Pages.CalendarModel
@{
ViewData["Title"] = "Calendar";
}
<form method="post">
@Html.Raw(Model.getCal())
</form>
@model Budget.Pages.CalendarModel
@{
ViewData[“标题”]=“日历”;
}
@Html.Raw(Model.getCal())
然后在我的cs页面中,我有一个getCal()方法,它通过div、css和一些数学生成一个日历,这很好,但是我需要将onClick事件附加到每一天(div)
公共字符串getCal()
{
//为了简化这个问题,我不会打印出所有的日历生成代码。
//下面的代码发生在一个循环中,其中MM、DD和YYYY会根据需要进行更改
//这是我想要放置onclick事件以调用另一个方法onDateSelect(This.id)的地方
retValue+=“”+
斯特代诺+
"";
返回retValue;//当然,当超出循环时
}
在页面中使用@Html.Raw(Model.getCal())
呈现内容后,您可以在div上添加click事件:
@section Scripts{
<script>
$(document).on('click', ".dayCell", function () {
});
</script>
}
还要配置反伪造服务以查找X-CSRF-TOKEN
标题:
services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN");
所以,
?是的。通常我会调用javascript函数,然后让AJAX在代码隐藏页面中调用web方法,但我不确定这对Razor页面是如何工作的。
@section Scripts{
<script>
$(document).on('click', ".dayCell", function () {
$.ajax({
type: "POST",
url: "/YourPageName?handler=Send",
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
data: JSON.stringify({
ID: this.id
}),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
},
failure: function (response) {
alert(response);
}
});
});
</script>
}
public JsonResult OnPostSend([FromBody]PostData value)
{
....
}
public class PostData
{
public string ID { get; set; }
}
services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN");