ASP.NET MVC编辑视图替换关联表字段后HTML编辑器不显示问题
问题原因及修复方案
1. 控制器未预加载关联导航属性
EF默认不会自动加载导航属性,你当前的查询逻辑只取了News主表数据,未加载关联的NewsArtical数据,可能导致视图渲染时属性为空,无法正常生成表单控件。
修改控制器Edit方法的查询逻辑:
// 先引入命名空间 using System.Data.Entity; // GET: News/Edit/5 public async Task<ActionResult> Edit(int? id) { if (id == null) { return RedirectToRecordNotFound(); } // 修改查询语句,预加载NewsArtical关联数据 News news = await _entities.News .Include(n => n.NewsArtical) .FirstOrDefaultAsync(n => n.ID == id); if (news == null) { return HttpNotFound(); } // 兜底:如果该新闻还没有关联的NewsArtical数据,提前初始化避免视图空引用 if (news.NewsArtical == null) { news.NewsArtical = new NewsArtical(); } return View(news); }
2. 未给NewsContent字段初始化富文本编辑器
你当前的JS代码只给Description字段初始化了summernote编辑器,嵌套属性NewsArtical.NewsContent生成的表单控件ID为NewsArtical_NewsContent,需要额外添加初始化逻辑。
修改视图Edit.cshtml的Scripts区块代码:
$(function () { // 原有Description的初始化,如果你要移除Content模块,可以删掉这行 $("#Description").summernote({ minHeight: 200 }); // 新增NewsContent的富文本初始化 $("#NewsArtical_NewsContent").summernote({ minHeight: 200 }); $('#Date').datetimepicker({ format: 'DD/MM/YYYY', showClose: true, showClear: true, toolbarPlacement: 'top' }); });
3. 移除原有Content模块(可选)
如果不需要保留原Description字段的编辑区域,直接在视图的表单代码中删除Description对应的LabelFor、EditorFor、ValidationMessageFor三行代码即可。
内容的提问来源于stack exchange,提问作者CrazyIvan
相关产品推荐
相关产品推荐

