从 Razor 页面更新数据库行并返回成功/失败的简单 JSON 请求



我已经尝试了我能找到的所有示例,但它们对于我的简单需求来说都太复杂了。直到现在我才需要 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>

最新更新