ASP.NET Core 6.0中无法从cshtml.cs读取字符串值到cshtml页面
解决ASP.NET Core 6.0中PageModel向CSHTML页面传递HTML值的问题
针对[BindProperty]的问题排查与解决
确认页面Model指令正确
CSHTML页面顶部必须声明对应的PageModel类型,示例:@model YourProjectNamespace.Pages.YourPageModel替换为你实际的命名空间和PageModel类名。
检查Post Action的返回方式
在Post方法中设置HTMLRep后,必须返回Page()才能保留Model属性值,不能用RedirectToPage(重定向会开启新请求,Model数据会丢失)。代码示例:public IActionResult OnPost() { HTMLRep = reportHTML; // 你的HTML表格字符串 return Page(); // 关键:返回当前页面以保留Model数据 }正确渲染HTML内容
直接输出@Model.HTMLRep会被自动HTML编码,导致显示原始字符串而非渲染表格,需使用Html.Raw():<panel> @Html.Raw(Model.HTMLRep) </panel>
针对ViewData的问题排查与解决
确保Post Action返回Page()
Post方法中设置ViewData后必须返回Page(),重定向会清空ViewData:public IActionResult OnPost() { ViewData["HTML"] = reportHTML; return Page(); }正确读取并渲染ViewData
读取时先做类型转换,再用Html.Raw()渲染:<panel> @Html.Raw(ViewData["HTML"] as string) </panel>
额外场景:Post后需重定向的处理
如果Post后需要重定向(防止表单重复提交),改用TempData跨请求存储数据:
public IActionResult OnPost() { TempData["HTML"] = reportHTML; return RedirectToPage("./YourPage"); }
页面中读取并渲染:
<panel> @if(TempData["HTML"] != null) { @Html.Raw(TempData["HTML"].ToString()) } </panel>
内容的提问来源于stack exchange,提问作者Harshit Verma
相关产品推荐
相关产品推荐

