设置TempData[Member]后页面自动切换为深色模式的原因排查
表单提交错误处理异常:表单选项丢失与意外触发深色模式
我在处理表单提交的错误逻辑时,默认触发了一个错误场景,原始代码如下:
public async Task<IActionResult> OnPostSaveAsync() { try { //var newMemberId = await SaveMemberAsync(); var newMemberId = 0; if (newMemberId <= 0) { TempData["isError"] = true; TempData["errorMsg"] = "..."; return Page(); } } catch (Exception ex) { TempData["isError"] = true; // etc. return Page(); } }
这段代码功能正常,但提交错误后表单的下拉框等选项会被清空。为恢复表单提交前的选项值,我尝试在返回页面前添加TempData["Member"] = this.Member;,修改后的代码如下:
public async Task<IActionResult> OnPostSaveAsync() { try { //var newMemberId = await SaveMemberAsync(); var newMemberId = 0; if (newMemberId <= 0) { TempData["isError"] = true; TempData["errorMsg"] = "..."; TempData["Member"] = this.Member; return Page(); } } catch (Exception ex) { TempData["isError"] = true; // etc. return Page(); } }
修改后出现两个问题:页面自动切换为深色模式,且下拉框的历史选项仍未恢复。我搞不懂问题成因,也不知道该怎么诊断。
页面的错误提示标记代码如下:
@if(TempData["isError"] != null && (bool)TempData["isError"]) { <div class="callout callout-danger"> <p>@TempData["errorMsg"].ToString()</p> </div> }
另外,页面还出现了自定义代码中未定义的深色模式媒体查询,找不到#dcdcdc相关定义。
内容的提问来源于stack exchange,提问作者Logany-hi
相关产品推荐
相关产品推荐

