MVC中Html.ActionLink报linkText空值错误,请求排查解决
解决MVC中Html.ActionLink报错“Value cannot be null or empty: Parameter name: linkText”
问题原因
报错核心是Html.ActionLink的第一个参数(链接显示文本)不允许为null或空字符串。你的查询结果中存在部分item.tbl_main.user_logged_in值为null或空,渲染时触发了参数校验错误;注释掉ActionLink后跳过了该参数的校验,表格因此能正常加载。
解决方案
方案1:视图层直接处理空值(推荐)
在Html.ActionLink的第一个参数中添加空值判断,为空值设置默认显示文本:
<td>@Html.ActionLink(item.tbl_main.user_logged_in ?? "查看详情", "Details", "Home", new { mainId = item.tbl_main.Id }, null)</td>
如果不需要用用户名作为链接文字,也可以直接固定显示文本:
<td>@Html.ActionLink("查看详情", "Details", "Home", new { mainId = item.tbl_main.Id }, null)</td>
方案2:控制器层预处理数据
在查询后提前处理user_logged_in的空值情况,确保传递到视图的模型中该字段不为空:
var query = from pd in _context.tbl_main join p in _context.tbl_saved on pd.Id equals p.mainId orderby p.rowid select new ListViewModel { tbl_main = pd, tbl_saved = p }; // 转换为列表后处理空值 var dataList = query.ToList(); foreach (var item in dataList) { if (string.IsNullOrEmpty(item.tbl_main.user_logged_in)) { item.tbl_main.user_logged_in = "匿名用户"; } } return View(dataList);
方案3:修正数据源
如果业务规则要求user_logged_in不能为空,可以修改数据库表结构,给该字段添加非空约束,同时在数据写入环节确保不会存入空值。
内容的提问来源于stack exchange,提问作者fl13
相关产品推荐
相关产品推荐

