You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 6.0中无法从cshtml.cs读取字符串值到cshtml页面

解决ASP.NET Core 6.0中PageModel向CSHTML页面传递HTML值的问题

针对[BindProperty]的问题排查与解决

  1. 确认页面Model指令正确
    CSHTML页面顶部必须声明对应的PageModel类型,示例:

    @model YourProjectNamespace.Pages.YourPageModel
    

    替换为你实际的命名空间和PageModel类名。

  2. 检查Post Action的返回方式
    在Post方法中设置HTMLRep后,必须返回Page()才能保留Model属性值,不能用RedirectToPage(重定向会开启新请求,Model数据会丢失)。代码示例:

    public IActionResult OnPost()
    {
        HTMLRep = reportHTML; // 你的HTML表格字符串
        return Page(); // 关键:返回当前页面以保留Model数据
    }
    
  3. 正确渲染HTML内容
    直接输出@Model.HTMLRep会被自动HTML编码,导致显示原始字符串而非渲染表格,需使用Html.Raw():

    <panel>
        @Html.Raw(Model.HTMLRep)
    </panel>
    

针对ViewData的问题排查与解决

  1. 确保Post Action返回Page()
    Post方法中设置ViewData后必须返回Page(),重定向会清空ViewData:

    public IActionResult OnPost()
    {
        ViewData["HTML"] = reportHTML;
        return Page();
    }
    
  2. 正确读取并渲染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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 07:45:15