我已经尝试了我能找到的所有示例,但它们对于我的简单需求来说都太复杂了。直到现在我才需要 json,所以我有点斗鸡眼。
我需要一个按钮,该按钮使用 JSON 调用 Razor 页面代码,并使用今天的日期更新数据库中的字段。 从本质上讲,用户想要打印"最终批准信"(这有效),但也要按下一个按钮(现在),将课程的字段"最终批准日期"更新为 Today()。
我可以在正常的 Razor 页面代码隐藏中进行数据库更新并确定成功/失败。但是没有页面重新加载的 JSON 调用似乎更优雅。是JSON让我难倒了。希望我的痛苦将来能帮助别人。不需要列表,不需要类,只需要一个请求和响应,大部分操作是数据库更新。(为了关注我的 JSON 愚蠢,我省略了)。
在"启动"中.cs就在服务之前。AddMVC()
services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN");
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddSession();
services.AddMemoryCache();
在 FinalApprovalLetter.cshtml 的顶部
<script type="text/javascript">
$(function updateRow () {
$.get('/FinalApprovalLetter/').done(function () {
$('#success').append([message returned from JsonResult OnGet]);
});
});
});
</script>
在 FinalApprovalLetter.cshtml 的正文中:用于更新数据库/行的按钮
<input type="button" class="d-print-none" value="Set Final Date For Course (today)" onclick="updateRow" />
<br />
<label id="success" />
在 FinalApprovalLetter.chstml 后面的代码中.cs
public JsonResult OnGet()
{
//DO database row update, insert today's date in FinalApprovalDate field
//DETERMINE AND RETURN SUCCESS/FAILURE (records affected)
//I HAVE CODE TO DO THIS AND IT WILL WORK
return new JsonResult("[success/failure message");
}
今天建议使用本机JSON.Parse
方法来解析 JSON。
所以你可以在OnGet()
中执行此操作,将任何其他字段添加到返回对象:
public JsonResult OnGet()
{
//DO database row update, insert today's date in FinalApprovalDate field
//DETERMINE AND RETURN SUCCESS/FAILURE (records affected)
//I HAVE CODE TO DO THIS AND IT WILL WORK
return JsonResult(new { success = "message text" });
}
然后分析返回的 JSON 并使用该值。确保无论是通过公共页面还是通过此页面都包含 JQuery 库,否则此代码将错误地指出 JQuery 未包含在内。
定义updateRow
的部分需要在调用onclick
处理程序之前执行,否则将出现错误。
<script type="text/javascript">
function updateRow () {
$.get('/FinalApprovalLetter/').done(function (data) {
var obj = JSON.parse(data);
$('#success').append(obj.success);
});
}
</script>