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

