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

Razor Page向Partial View传值时出现Model为空问题如何解决

问题根因
  • 核心原因:你的分部视图ViewBoardPartial.cshtml顶部错误添加了@page "{handler?}"指令。@page是独立Razor页面的专属标识,添加后该文件会被识别为可独立路由访问的Razor Page,不再作为普通分部视图处理,后端通过return Partial()传递的模型会被直接忽略,导致Model始终为null。
  • 次要问题:前后端参数名拼写不一致,前端请求传递的参数名为boardid,后端处理方法的形参为boradid(拼写错误),可能导致参数绑定失败,接收到的参数为默认值0,查询不到对应数据返回空列表。
  • 冗余代码问题:分部视图不需要定义<head>标签,也不需要重复引入js文件,作为父页面的嵌入片段,重复加载资源会导致执行异常。
解决方案
  1. 删除分部视图顶部的@page "{handler?}"行,保留其他引用代码即可。
  2. 修正后端处理方法的参数拼写,与前端传参保持一致,避免参数绑定失败。
  3. 移除分部视图中的<head>标签和重复的js引入代码,清理冗余逻辑。
  4. 可在后端返回前增加断点,确认查询得到的ilist是否有数据,排除数据库查询无结果的情况。

修正后代码示例

分部视图代码

@using WebApplication1.Models
@model IList<tbl_comment>

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

@if (Model != null && Model.Any())
{
    foreach (var item in Model)
    {
    <div class="card shadow mb-4">
        <div class="card-header py-3">
            <h6 class="m-0 font-weight-bold text-primary">작성자: @item.user_id 날짜: @item.comment_date</h6>
        </div>
        <div class="card-body" style="color :black">
            @Html.Raw(item.comment_content)
            <hr>
        </div>
    </div>
    }
}
else
{
    <p>暂无对应评论数据</p>
}

后端处理方法代码

public PartialViewResult OnGetBoardPartial(int boardid)
{
    contentOn = true;

    IQueryable<tbl_comment> Comment = from m in _context.tbl_comment
                                      where m.board_id == boardid
                                      orderby m.comment_date
                                      select m;
    var ilist = Comment.ToList();
    return Partial("ViewBoardPartial", ilist);
}

内容的提问来源于stack exchange,提问作者로다현

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:36:02