所以我是一个asp.net和razor页面的初学者,我一直在努力将我的WPF项目改造成一个网络程序。
我目前的障碍是尝试在下拉菜单更改选项时正确获取报告。此下拉列表当前由一系列报告类型填充,并由此代码生成。
@Html.DropDownListFor(model=>model.SelectedReport,
Html.GetEnumSelectList(Model.SelectedReport.GetType()),
"Select Report",
new {@id = "ReportDropdown", @onchange = "UpdateReport()"})
我最终使用此函数来处理onchange事件。
function UpdateReport() {
var reportID = $("ReportDropdown").val();
$.ajax
({
url: '/Reporting/UpdateReport',
type: 'POST',
datatype: 'application/JSON',
contentType: 'application/JSON',
data: JSON.stringify({
reportID: +reportID
}),
success: function (result) {
alert(result)
},
error: function () {
alert("That wasn't right.")
}
});
}
我相信这是有效的,因为"那不对。"更改选择时会发出警报。但是在这一点上,我无法弄清楚为什么报告不会使用此PageModel代码进行更新。
public class ReportingModel : PageModel
{
public DataView Report { get; private set; }
[Display(Name ="Selected Report")]
public ReportGenerator.ReportTypes SelectedReport { get; set; }
public ReportGenerator generator { get; set; }
public IActionResult OnGet()
{
generator = new ReportGenerator()
{
SelectedReport = ReportGenerator.ReportTypes.DailySummary
};
Report = generator.Report.DefaultView;
return Page();
}
public async Task<IActionResult> OnPostUpdateReport()
{
generator.SelectedReport = SelectedReport;
this.Report = generator.Report.DefaultView;
return Page();
}
}
有关如何使其正常工作的任何建议,还是有更好的方法可以用来实现这一目标?